我正在尝试以下操作:
Len='echo $str | wc -c'
但我得到这个输出:
'Echo $str|wc -c'
我究竟做错了什么?
答案1
如果您喜欢使用引号进行命令替换,则必须使用反引号:`,而不是单引号:',例如。 :
Len=`echo $str | wc -c`
正如其他人提到的,您也可以使用语法len=$(...)
。
答案2
Len='echo $str | wc -c'
这会将变量设置Len
为字符串echo $str | wc -c
(它不会输出任何内容)。
shell 不会执行字符串中的任何命令,因为它不是命令替换。
要获取命令的输出,请使用命令替换$(...)
:
Len=$( echo "$str" | wc -c )
在这种情况下,也可以使用
Len="${#str}"
这要快得多。
参数扩展${#parameter}
将扩展到 值的长度parameter
。
答案3
您需要将命令的输出分配给 Len 变量:
Len=$(echo "$str" | wc -c)