我想讓腳本在後臺運行(使用&
),並檢查從鍵盤讀取的某個文件的名稱是否存在多個目錄,作爲參數給出。Bash shell腳本,只用腳本的某個部分運行&
因此,腳本將運行在while true
循環中,直到創建具有給定名稱的文件。
問題是,當我運行腳本時,我從read中鍵入的內容被當作普通終端cmd。
這裏的腳本:
#!/bin/bash
echo Type the file name
read fileName
while true
do
for file in [email protected]
do
if find $file -name $fileName | grep -q "$fileName"
then
echo The file with name $fileName has been created!!!
break
fi
done
done
如果我不&
運行腳本,它工作正常。
加載的文件名作爲參數該腳本不是通過* read *來「加載」它。 'scriptname.sh filename' - >在你的腳本中,文件名可以通過'$ 1'變量訪問($ 1是第一個參數$ 2秒...)。 http://how-to.wikia.com/wiki/How_to_read_command_line_arguments_in_a_bash_script –
由於您在Linux中,因此請考慮使用[**'inotifywait' **](http://unix.stackexchange.com/a/323919/13377 )而不是用一個while循環錘擊你的磁盤(或緩存)。 – ghoti
但要回答你的問題......文件名被作爲shell輸入的原因是通過背景腳本,你從終端分離它,以便它不能接收輸入。如果你真的需要提供將由後臺腳本處理的輸入,請使用Fred的建議。 – ghoti