2014-02-23 79 views
0

我變得有些不同的結果與使用這些命令:利用雙贏的bash不同的結果對於不同的Unix相同參數的函數

ls "$MYDIR/*.avi" 
md5sum "$MYDIR/*.avi" 

。前者僅列出以.avi結尾的文件,而後者則對包含.avi的所有文件執行校驗和計算。這是預期的嗎?我認爲通配符操作應該始終保持一致。

+3

能您查看再次發佈並正確地使用'ls'和'md5sum'命令的格式?在堆棧溢出中,「逐字」(又名「代碼」或「預格式化」)文本應附帶反引號。我可以直接編輯你的文章,但是想知道我應該怎麼做,因爲你的文章中雙引號的數量有些問題。 – nodakai

回答

1

因爲你在引用通配符,所以它不會被shell擴展(但變量是)。這意味着你讓命令決定如何處理*角色。

您希望shell調用命令之前展開的文件名:

ls "$MYDIR"/*.avi 
md5sum "$MYDIR"/*.avi 

您可能希望將結果存儲在一個數組,如果你重複使用它們

files=("$MYDIR"/*.avi) 
ls "${files[@]}" 
md5sum "${files[@]}" 
相關問題