我有一個shell腳本可以調用一些其他生成一些文件的腳本。在我的shell腳本結尾處,我想將生成的所有文件(它們具有相同的preffix)移動到文件夾中。在Shell腳本中移動生成的文件
但是,由於某種原因,如果我在腳本的末尾調用了mv
,我得到這個錯誤,就像文件系統仍然不知道我認爲的文件。
mv: cannot stat `foo_*': No such file or directory
我第一次嘗試「解決」,這是引進sleep
通話幾秒鐘,以幫助我避免這個問題,但是,即使價值是非常高的,我確信已經創建的文件,我得到了同樣的錯誤。
然後我試圖運行我的腳本是這樣的:
sh myscript.sh ; mv foo_* bar
,並沒有問題workded。
任何想法爲什麼會發生這種情況,以及如何避免必須使用兩個腳本或雙線命令來實現所需的效果?
謝謝。
編輯:我正在寫這個給那些可能從Google來到這裏並且有類似問題的人。
基本上,我產生mv
命令是這樣的:
mv $preffix"_*" $destination
出於某種原因,這是不正常。剛剛創建這樣一個臨時變量:
MV_CMD=$preffix"_*" $destination
,然後說這就是這樣的:
mv $MV_CMD
。
如果有人知道更清潔的方式,請隨時回答。謝謝你的回答。
我無法想象腳本的結尾看起來像是什麼問題。你能顯示一些腳本的最小版本來顯示問題嗎? 'foo_ *'和'foo *'之間的差異是否顯着? – 2013-03-27 17:47:05
'myscript.sh'是否改變當前的工作目錄?如果是這樣,腳本可能不會執行您期望的目錄中的'mv'命令(這可以解釋爲什麼將它作爲單獨的命令運行)。 – bta 2013-03-27 18:16:09
...或做'mv/your/dir/foo *' – fedorqui 2013-03-27 18:36:13