考虑这段代码:
#!/bin/bash +x
echo -n "String: "
read s
n=`expr index $s " "`
if [ $n -gt 0 ]; then
m=`expr $n - 1`
echo "Nome: " `expr substr $s 1 $m`
fi
当我使用 运行它并在提示符中写入“John Smith”时,我收到此错误:
./script.sh: 第 5 行: [: -gt: 一元运算符预期
我可以通过在n的定义中包含$s以及在 echo 命令中用双引号来修复它,如下所示:
#!/bin/bash +x
echo -n "String: "
read s
n=`expr index "$s" " "`
if [ $n -gt 0 ]; then
m=`expr $n - 1`
echo "Nome: " `expr substr "$s" 1 $m`
fi
这个底部的工作得很好。但为什么?“”有什么区别?