当前位置:  技术问答>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 这种方式执行脚本

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3