2010-03-30 102 views
0
market_l="${echo $1 | awk '{print tolower($0)}'}" 
echo $market_l 

當我執行這個它給我下面的錯誤:什麼不對這個shell腳本

./test: market_l="${echo $1 | awk '{print tolower($0)}'}": The specified substitution is not valid for this command. 

回答

1

您的意思是使用$()操盤${}

+0

我想轉換提供的$ 1參數在執行腳本將其小寫並存儲在一個變量中,然後回顯。 – Vijay 2010-03-30 06:57:37

+0

我認爲你是對的。感謝提示。 – Vijay 2010-03-30 06:58:41

2

您應該使用$()將輸出分配給變量。不${}

market_l="$(echo $1 | awk '{print tolower($0)}')" 

,或者你可以用KSH做

#!/bin/ksh 
typeset -l market_l 
market_l="$1" 
echo $market_l 

其他方式改變的情況下,除了awk,僅供參考

$ echo "$1"|tr [A-Z] [a-z] 

$ echo "$1"|sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' 
+0

不要忘記使用引號:'「$ 1」'。除非你特別不想,否則總是引用。 – 2010-03-30 10:21:33

+0

實際上在這個例子中,由於echo的輸出是相同的,所以它不會使用引號。但是,是的,你有權在必要時總是使用引號。 – ghostdog74 2010-03-30 10:42:32