码迷,mamicode.com
首页 > 其他好文 > 详细

Ubuntu下sh *.sh使用==操作符执行报错

时间:2014-08-14 20:46:59      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:bash   dash   鸟哥   sh06.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:~/bin
export PATH
read -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 0
echo "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$ 



Ubuntu下sh *.sh使用==操作符执行报错,布布扣,bubuko.com

Ubuntu下sh *.sh使用==操作符执行报错

标签:bash   dash   鸟哥   sh06.sh   

原文地址:http://blog.csdn.net/windeal3203/article/details/38561313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!