我在 Linux 上的 bash 中有这样的东西:
some_variable= ls *somepattern* | xargs cat | wc -c
Run Code Online (Sandbox Code Playgroud)
我想乘以某个数量,例如:
another_variable = $(($some_variable * 10))
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误
-bash: * 100: syntax error: operand expected (error token is "* 100")
Run Code Online (Sandbox Code Playgroud)
为什么不可能不乘some_variable用wc?
你永远不会进行乘法,你实际上并没有在那里分配一个变量。周围不能有空格=,您需要:
some_variable=some_value
Run Code Online (Sandbox Code Playgroud)
接下来,如果要将变量分配给命令的输出,则需要使用命令替换:
some_variable=$(some_command)
Run Code Online (Sandbox Code Playgroud)
或者,仍然支持但不推荐使用的反引号:
some_variable=`some_command`
Run Code Online (Sandbox Code Playgroud)
所以,你想要的是:
some_variable=$(ls *somepattern* | xargs cat | wc -c)
Run Code Online (Sandbox Code Playgroud)
但这样做会更好:
some_variable=$(cat *somepattern* | wc -c)
Run Code Online (Sandbox Code Playgroud)
一旦你有了它,你可以这样做:
another_variable=$(($some_variable * 10))
Run Code Online (Sandbox Code Playgroud)
最后,你的错误是因为,如第一部分所述,你的变量是空的,所以你最终运行了这个:
$ another_variable = $(( * 10))
bash: * 10: syntax error: operand expected (error token is "* 10")
Run Code Online (Sandbox Code Playgroud)