使用命令替换

Rio*_*Rio 1 bash shell-script

shell 变量号包含1 1 1 1 1由制表符分隔。

我希望它只包含第一个 1。

我想

number= $(echo "$number"| cut -f 3 )
Run Code Online (Sandbox Code Playgroud)

我收到错误“1:未找到命令”并且 number 的内容没有改变。

我究竟做错了什么?

Joh*_*024 5

假设number是制表符分隔的,然后考虑:

number= $(echo "$number"| cut -f 3 )
Run Code Online (Sandbox Code Playgroud)

的结果echo "$number"| cut -f 3是第三个元素numbers1。因此,shell 尝试执行:

number= 1
Run Code Online (Sandbox Code Playgroud)

在此命令中,变量number临时设置为空,shell 尝试执行命令1。由于没有名为1的命令,shell 会发出错误消息:

bash: 1: command not found
Run Code Online (Sandbox Code Playgroud)

这是 shell 试图告诉您它找不到名为1.

解决办法是去掉空格:

number=$(echo "$number"| cut -f 3 )
Run Code Online (Sandbox Code Playgroud)

命令替换后,这变为:

number=1
Run Code Online (Sandbox Code Playgroud)

这将成功分配number给值1