无法将变量与串联字数相乘

无法将变量与串联字数相乘

我在 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")

相关内容