2014-04-04 30 views
0

我有這樣(的text.txt)的文件的行執行命令:bash腳本 - 即對應於文件

ls -al 
ps -au 
export COP=5 
clear 

每一行對應於一個命令。在我的腳本中,我需要讀取每一行並啓動每個命令。

ps:我嘗試了所有這些選項,並與所有這些選項,我有與命令「導出」相同的問題。在文件中,有「出口COP = 5」,但在運行腳本之後,如果我在同一終端做回聲$ COP,沒有值顯示

+4

'bash text.txt' ?? – Kent

+0

如果你不知道這個文件來自哪裏,你最好注意在'chroot''環境中運行 –

+0

'source text.txt' ?? –

回答

0
while IFS= read line; do eval $line; done < text.txt 

要小心它,它一般不建議使用eval,因爲它非常強大並且容易被濫用。
但是,如果沒有未經授權的用戶對text.txt產生影響,它應該沒問題。

+1

爲了保護轉義字符和空格,使用'while IFS = read -r line' –

+0

好的補充,我的例子只是概念證明;) – John

+0

這很好用!我只有命令「導出」的問題。在該文件中有「export COP = 5」,但是在運行腳本之後,如果我在同一個終端中回顯$ COP,則沒有值顯示 – user3472065

0

爲了避免混淆我將簡單地從text.txt的文件重命名爲text並添加一個認領(例如#!/bin/bash)作爲文件的第一行。通過調用chmod +x text確保它可執行。之後,您可以按預期執行。

$ cat text 
#!/bin/bash 
ls -al 
ps -au 
clear 

$ chmod +x text 
$ ./text