2010-03-30 93 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