2014-11-03 90 views
0

我寫了一個很簡單的腳本echo $1傳遞一個明星參數shell腳本文件

print_star.sh內容是

echo $1 

現在調用此腳本./print_star *時,它會顯示該文件夾的第一個文件。

如何能夠將明星(*)傳遞給shell腳本?

PS。我試圖簡化它,但目的是傳遞一個完整的SQL查詢(帶星號)將結果導出到一個文件。

回答

1

加入引用:echo "$1"
你應該差不多總是引用shell腳本中的變量;不這樣做可能會導致不可預知的結果(正如您所經歷的那樣)。

調用此腳本./print_star *

這也似乎是錯誤的,你應該做./print_star \*./print_star '*'防止*在你從調用它的shell擴展。

0

修改腳本添加"各地$1

[prompt] cat print_str.sh 
echo "$1" 

,並調用腳本*單引號括起來

./print_str.sh '*' 
0

最簡單的解決方法是報價:

./print_star '*' 

./print_star \* 

如果你正在使用bash,你也可以這樣做:

set -o noglob 
./print_star * 

或者

set -f 
./print_star * 

在任何一種最後的情況下,你可以用set -o globset +f

復位行爲