当前位置: 技术问答>linux和unix
./*.sh和sh *.sh执行结果不同
来源: 互联网 发布时间:2017-05-26
本文导语: 测试脚本文件 windeal@ubuntu:~/Windeal/shell$ cat test.sh #!/bin/bash echo "hellon" echo -e "hellon" windeal@ubuntu:~/Windeal/shell$ 复制代码 使用./*.sh执行结果为: windeal@ubuntu:~/Windeal/shell$ ./test.sh hellon hello windeal@ubuntu:~/Windeal/shell$ 复制代码 ...
测试脚本文件
windeal@ubuntu:~/Windeal/shell$ cat test.sh
#!/bin/bash
echo "hellon"
echo -e "hellon"
windeal@ubuntu:~/Windeal/shell$
复制代码
使用./*.sh执行结果为:
windeal@ubuntu:~/Windeal/shell$ ./test.sh
hellon
hello
windeal@ubuntu:~/Windeal/shell$
复制代码
使用sh *.sh执行结果为
windeal@ubuntu:~/Windeal/shell$ sh test.sh
hello
-e hello
windeal@ubuntu:~/Windeal/shell$
复制代码
另一个错误的例子
判断符 []在sh *.sh方式执行中不能成功
测试脚本如下
windeal@ubuntu:~/Windeal/shell$ cat 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 choicen"
windeal@ubuntu:~/Windeal/shell$
复制代码
使用./*.sh方式执行没问题:
windeal@ubuntu:~/Windeal/shell$ ./sh06.sh
Please enter (y/n):y
your input is y
windeal@ubuntu:~/Windeal/shell$
复制代码
使用sh *.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$
复制代码
|
./test.sh 这种方式系统会用脚本里面定义的 /bin/bash 来解释并执行代码
sh test.sh 这种方式系统会用 sh 来解释并执行代码
bash 和 sh 的语法是不一样的
虽然某些系统里面 sh 是 bash 的一个 link,但并非每个系统都是这样。
推荐使用 ./test.sh 这种方式执行脚本
sh test.sh 这种方式系统会用 sh 来解释并执行代码
bash 和 sh 的语法是不一样的
虽然某些系统里面 sh 是 bash 的一个 link,但并非每个系统都是这样。
推荐使用 ./test.sh 这种方式执行脚本
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。