我寫了一個很簡單的腳本echo $1
傳遞一個明星參數shell腳本文件
的print_star.sh
內容是
echo $1
現在調用此腳本./print_star *
時,它會顯示該文件夾的第一個文件。
如何能夠將明星(*
)傳遞給shell腳本?
PS。我試圖簡化它,但目的是傳遞一個完整的SQL查詢(帶星號)將結果導出到一個文件。
我寫了一個很簡單的腳本echo $1
傳遞一個明星參數shell腳本文件
的print_star.sh
內容是
echo $1
現在調用此腳本./print_star *
時,它會顯示該文件夾的第一個文件。
如何能夠將明星(*
)傳遞給shell腳本?
PS。我試圖簡化它,但目的是傳遞一個完整的SQL查詢(帶星號)將結果導出到一個文件。
加入引用:echo "$1"
。
你應該差不多總是引用shell腳本中的變量;不這樣做可能會導致不可預知的結果(正如您所經歷的那樣)。
調用此腳本./print_star *
這也似乎是錯誤的,你應該做./print_star \*
或./print_star '*'
防止*
在你從調用它的shell擴展。
修改腳本添加"
各地$1
[prompt] cat print_str.sh
echo "$1"
,並調用腳本*
單引號括起來
./print_str.sh '*'
最簡單的解決方法是報價:
./print_star '*'
或
./print_star \*
如果你正在使用bash,你也可以這樣做:
set -o noglob
./print_star *
或者
set -f
./print_star *
在任何一種最後的情況下,你可以用set -o glob
或set +f