我有這樣(的text.txt)的文件的行執行命令:bash腳本 - 即對應於文件
ls -al
ps -au
export COP=5
clear
每一行對應於一個命令。在我的腳本中,我需要讀取每一行並啓動每個命令。
ps:我嘗試了所有這些選項,並與所有這些選項,我有與命令「導出」相同的問題。在文件中,有「出口COP = 5」,但在運行腳本之後,如果我在同一終端做回聲$ COP,沒有值顯示
我有這樣(的text.txt)的文件的行執行命令:bash腳本 - 即對應於文件
ls -al
ps -au
export COP=5
clear
每一行對應於一個命令。在我的腳本中,我需要讀取每一行並啓動每個命令。
ps:我嘗試了所有這些選項,並與所有這些選項,我有與命令「導出」相同的問題。在文件中,有「出口COP = 5」,但在運行腳本之後,如果我在同一終端做回聲$ COP,沒有值顯示
while IFS= read line; do eval $line; done < text.txt
要小心它,它一般不建議使用eval,因爲它非常強大並且容易被濫用。
但是,如果沒有未經授權的用戶對text.txt產生影響,它應該沒問題。
爲了保護轉義字符和空格,使用'while IFS = read -r line' –
好的補充,我的例子只是概念證明;) – John
這很好用!我只有命令「導出」的問題。在該文件中有「export COP = 5」,但是在運行腳本之後,如果我在同一個終端中回顯$ COP,則沒有值顯示 – user3472065
cat test.txt | xargs -l1 bash -c '"[email protected]"' echo
爲了避免混淆我將簡單地從text.txt
的文件重命名爲text
並添加一個認領(例如#!/bin/bash
)作爲文件的第一行。通過調用chmod +x text
確保它可執行。之後,您可以按預期執行。
$ cat text
#!/bin/bash
ls -al
ps -au
clear
$ chmod +x text
$ ./text
'bash text.txt' ?? – Kent
如果你不知道這個文件來自哪裏,你最好注意在'chroot''環境中運行 –
'source text.txt' ?? –