我有一個簡單的Linux腳本:爲什麼雙引號改變這一結果
#!/bin/sh
for i in `ls $1`
do
echo $i
done
在我的temp文件夾中有4檔:AA,a.aa,a.ab和a.ac
當我打電話./script temp/*。??我得到:
temp/a.aa
當我打電話./script「temp/*。??」我得到:
temp/a.aa
temp/a.ab
temp/a.ac
爲什麼雙引號改變結果?
我有一個簡單的Linux腳本:爲什麼雙引號改變這一結果
#!/bin/sh
for i in `ls $1`
do
echo $i
done
在我的temp文件夾中有4檔:AA,a.aa,a.ab和a.ac
當我打電話./script temp/*。??我得到:
temp/a.aa
當我打電話./script「temp/*。??」我得到:
temp/a.aa
temp/a.ab
temp/a.ac
爲什麼雙引號改變結果?
在第一種情況下,外殼擴展temp/*.??
到:
temp/a.aa temp/a.ab temp/a.ac
由於您只看着你的腳本中的第一個參數僅temp/a.aa
傳遞給LS。
在第二種情況下,由於引號,shell不執行任何擴展,並且腳本收到在調用ls
時展開的單個參數temp/*.??
。
由於不帶引號的外殼擴展您的來電:
./script temp/a.aa temp/a.ab temp/a.ac
所以$1
是temp/a.aa
,而不是temp/*.??
。