我试图用两个由空格分隔的词来分割一个字符串,这个片段对我不起作用:
$ cat > test.sh
#/bin/bash
NP="3800 480"
IFS=" "
echo $NP
echo $NP | read VAR1 VAR2
echo "Var1 : $VAR1"
echo "Var2 : $VAR2"
exit 0
并调用它给我:
$ chmod 755 ./test.sh && ./test.sh
3800 480
Var1 :
Var2 :
我希望看到的地方:
3800 480
Var1 : 3800
Var2 : 480
如何在 bash 脚本中拆分这样的简单字符串?
编辑:(我使用的答案)
感谢 jw013 提供的链接,我能够想出这个适用于 bash 2.04 的解决方案:
$ cat > test.sh
#!/bin/bash
NP="3800 480"
read VAR1 VAR2 << EOF
$NP
EOF
echo $VAR2 $VAR1
$./test.sh
480 3800
最佳答案
问题在于管道涉及一个分支,因此您需要确保脚本的其余部分在执行读取的 shell 中执行。
只需添加 ( ... )
如下:
. . .
echo $NP | (read VAR1 VAR2
echo "Var1 : $VAR1"
echo "Var2 : $VAR2"
exit 0
)
关于bash - 为什么这个 bash 脚本不拆分字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6931399/