区别只有一点:
sh表示脚本默认使用sh脚本解释器。
未指定脚本解释器默认为 ./。
具体解释:
使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限。
使用“sh” 执行脚本,对应的xxx.sh没有执行权限,亦可执行。
当脚本开头使用#!设置使用的shell类型时,使用“./”执行脚本时,则使用“#!”标志的shell执行脚本;若无使用“#!”标记,则使用系统设置的默认shell执行脚本。
扩展资料:
举例:
登录用户root查看权限:
-rwx—— 1 root root
执行这个shell脚本 :
./test 成功。
sh test 成功。
去掉执行权限x:
-rw——- 1 root root 17 2011-09-22 23:33 test
执行这个shell脚本。
./test 失败 (-bash: ./test: Permission denied)。
sh test 成功。
sh脚本里可以调用sed,awk,grep,perl之类的命令来使用正则表达式。
如果是bash 3.0脚本,支持进程内的正则表达式,使用下面的语法:
[[ string =~ regex ]]
if [[ abcfoobarbletch =~ 'foo(bar)bl(.*)' ]]then
echo The regex matches!
echo $BASH_REMATCH -- outputs: foobarbletch
echo ${BASH_REMATCH[1]} -- outputs: bar
echo ${BASH_REMATCH[2]} -- outputs: etch
fi
使用这个语法的性能要比生成一个新的进程来运行grep命令优越,因为正则表达式匹配在bash进程内完成。如果正则表达式或者字符串包括空格或者shell 关键字,(诸如'*'或者'?'),就需要用引号包裹。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)