首页 > 代码库 > Ubuntu下sh *.sh使用==操作符执行报错
Ubuntu下sh *.sh使用==操作符执行报错
————《鸟哥的Linux私房菜——基础篇》学习笔记
ubuntu默认的sh是连接到dash,而我们写shell脚本时使用的时bash。bash和dash在一些方面是不兼容的。因此执行同一个脚本,两者结果不一样,可能用./*sh可以执行,而sh *.sh报错。
为了正确实行使用./*.h 或者 bash *.sh 或者把==换成=(不兼容部分)
也可以直接让系统不使用dash。。。。Ubuntu之所以使用dash是因为其体积小,兼容性高,但是悲催的时,一些bash可执行的脚步在dash下不能执行了。
鸟哥私房菜13章学习shell script 中2.2节有一个例子sh06.sh
#!/bin/bash#Program# "test the func of []"#History:#2014-08-14 Windeal#version 1#All rights reserved;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p "Please enter (y/n):" yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo "your input is y" && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "your input is n" && exit 0echo "I don't know what you choice\n"~使用sh执行报错:
windeal@ubuntu:~/Windeal/shell$ sh sh06.sh Please enter (y/n):y sh06.sh: 12: [: y: unexpected operator sh06.sh: 13: [: y: unexpected operator I don't know what you choice windeal@ubuntu:~/Windeal/shell$
使用./sh06.sh 可以执行
windeal@ubuntu:~/Windeal/shell$ ./sh06.sh Please enter (y/n):y your input is y windeal@ubuntu:~/Windeal/shell$
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。