linux执行shell脚本的

时间:2021-05-04 07:57:15
linux执行shell脚本的方式及一些区别

http://4554480.blog.51cto.com/4544480/837006

1 chmod777 test.sh

./test.sh

2 bash test.sh

3 sh test.sh

上边只是简单运行一个脚本, 如想运行一个函数或者方法多的脚本, 看下边 

#####################
#!/bin/sh
# kill all java applications
#####################
printg(){
echo "hello guys!"
}

printg2(){
echo "printg2!"
}
if [ "$1" = "" ]
then
echo "print sth..."
echo "[printg or 1]exec printg|[printg2 or 2]exec printgs"
fi
if [ "$1" = printg ]
then
printg
fi
if [ "$1" = printg2 ]
then
printg2
fi

这样的脚本创建好后, 在终端运行

chmod 777 test.sh
./test.sh
则会提示你按 printg 或者printg2

./test.sh printg

这样执行后, 就会执行方法里面的内容了

----------------------------------------------------

最新版本

增加了数字参数1(可以和printg同时起作用, 也就是shell if中或的支持)

改写了if方法, 只有一个判断体

改了bug

bug是

tesh.sh: line 13: [: missing `]'

13行正是加了if [] || [] 的一行

然后上网一查

if [ "$HEADER" = "true"] ;then 

出现了问题 ,这是因为 在 [ ] 内 要有空格 ,也就是说 "$HEADER" 前 和 "true" 后要有空格才行。

所以必须改为

if [ "$HEADER" = "true" ] ;then



这样就解决了 bash: [: missing `]'

最终代码如下:


#####################
#!/bin/sh
# kill all java applications
#####################
printg(){
echo "hello guys!"
}

printg2(){
echo "printg2!"
}

if [ "$1" == "printg" ]||[ "$1" == "1" ];then
printg
elif [ "$1" == printg2 ];then
printg2
else
echo "usage: type> {$0 printg} or {$0 1}, execute printg; type> {$0 printg2} exec printg2()"
fi
注:

一些借鉴来自著名的鸟哥童鞋

http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#check_1