我在 Linux 上的 bash 中有这样的东西:
some_variable= ls *somepattern* | xargs cat | wc -c
我想将其乘以一定数量,例如:
another_variable = $(($some_variable * 10))
但我收到一个错误
-bash: * 100: syntax error: operand expected (error token is "* 100")
为什么不能不some_variable
与相乘wc
?
答案1
你永远不会得到乘法,你实际上并没有在那里分配一个变量。周围不能有空格=
,您需要:
some_variable=some_value
接下来,如果您想将变量分配给输出对于命令,您需要使用命令替换:
some_variable=$(some_command)
或者,仍然受支持但已弃用的反引号:
some_variable=`some_command`
所以,你想要的是:
some_variable=$(ls *somepattern* | xargs cat | wc -c)
但这样做会更好:
some_variable=$(cat *somepattern* | wc -c)
一旦你有了这个,你就可以这样做:
another_variable=$(($some_variable * 10))
最后,导致您的错误的原因是,正如第一部分中所解释的,您的变量为空,因此您最终运行了以下命令:
$ another_variable = $(( * 10))
bash: * 10: syntax error: operand expected (error token is "* 10")