unexpected operator--shell script

我在ubuntu虚拟机下练习《鸟哥的Linux私房菜》中的shell脚本例子时,我习惯用vim编写完直接用sh xxx.sh来运行,

并且还可以用sh -n xxx.sh 或者-x,-v等参数来调试脚本。当运行if then语句的例子时,突然报错:xxx unexpected operator,

我暂且没有管它,因为我认为代码没有问题,并且我把if then的语句理解了就达到了学习的目的。

但是在练习用“[ ]”中括号来做判断时,还是这个问题,我决定寻求网络解决这个问题。

代码类似:

read -p "Please input (Y/N): " yn
[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, continue" && exit 0
[ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh, interrupt!" && exit 0
echo "I don't know what your choice is" && exit 0

#!/bin/bash

read -p "input yes or no(Y/N):" yesorno

if [ "$yesorno" == "Y" ] || [ "$yesorno" == "y" ]; then
        echo "okay, you say yes."
else
        echo "oh, no."
fi

原因应该是在ubuntu中默认的脚本语言是dash,用sh运行会采用dash的语言规则,所以会有如此错误。

如果用“./xxx.sh”来运行就没有问题了。那么咱们必须要用sh加参数来调试我们的脚本,怎么办?

好办,只需做一下配置修改就可以了。将使用dash 作为默认的系统脚本的选项取消掉。

命令为:

sudo dpkg-reconfigure dash

此时会跳到下面的配置页面,选择no并回车就好了。



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值