基础知识记录:
主要的函数说明:
case $变量名称 in <==关键字 case ,还有变量的字号
"第一个变量内容") <==每个变量建议用双引号括起来,关键为小括号 )
程式段
;; <==每个类别结尾用两个连续的分号来处理
"第二个变量内容")
程式段
;;
*) <==最后一个用 * 來代表其他值
其他的程式段
exit 1
;;
esac <== case 结尾,case反过来写!
变量说明:
linux中shell变量$#,$@,$0,$1,$2的含义解释:
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数。。。
例子1
vim ./script.sh
echo "$1"
echo "$2"
echo "$#"
echo "$(eval echo "/$$#")"
echo "${!#}"
echo "$@"
echo "$*"
执行
chmod +x script.sh
./script.sh a1 a2 a3 a4 a5
结果如下:
a1
a2
5
/6632#
a5
a1 a2 a3 a4 a5
a1 a2 a3 a4 a5
例子2
#!/bin/bash
case $1 in
男 | M)
echo "靓仔"
;;
女 | F)
echo "靓女"
;;
*)
echo "bye~"
;;
esac
执行
略
结果
略
例子3
未完成
=========================分割线=================================
jar启动sh
#!/bin/bash
echo ["$1"] "$2ing"
if [ ! -d "./logs" ]; then
mkdir ./logs
fi
now=$(date +%Y%m%d)
log_file="./logs/$1_${now}.log"
command="java -Xms256m -Xmx1024m -jar ./$1.jar"
start(){
if [ "$log_file" != "" ]; then
exec $command > "$log_file" &
else
exec $command &
fi
}
stop(){
ps -ef | grep "$command" | awk '{print $2}' | while read pid
do
C_PID=$(ps --no-heading $pid | wc -l)
echo "当前PID=$pid"
if [ "$C_PID" == "1" ]; then
echo "PID=$pid 准备结束"
kill -9 $pid
echo "PID=$pid 已经结束"
else
echo "PID=$pid 不存在"
fi
done
}
restart(){
stop
start
}
case "$2" in
start)
start
;;
stop)
stop
;;
reload|restart)
restart
;;
*)
printf 'Usage: %s {start|stop|reload|restart}\n' "$prog"
exit 1
;;
esac
执行:
脚本.sh jar文件名 start
脚本.sh jar文件名 stop