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则会提示你按 printg 或者printg2
./test.sh
./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