不能将变量与连接的字数相乘

0 bash shell-script

我在 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_variablewc

ter*_*don 5

你永远不会进行乘法,你实际上并没有在那里分配一个变量。周围不能有空格=,您需要:

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)