shell的shift、$*、$@
1、$* 和 $@的区别
1.1)$@,将参数识别为独立的个体:
# cat test.sh #!/bin/bash touch "$@" # sh test.sh 1 2 3 # ll
total 4
-rw-r--r--. 1 root root 0 Mar 11 10:12 1
-rw-r--r--. 1 root root 0 Mar 11 10:12 2
-rw-r--r--. 1 root root 0 Mar 11 10:12 3
-rw-r--r--. 1 root root 24 Mar 11 10:12 test.sh
1.2)$*,将参数识别为一个整体:
# cat test.sh #!/bin/bash touch "$*" # sh test.sh 1 2 3 # ll total 4 -rw-r--r--. 1 root root 0 Mar 11 10:11 1 2 3 -rw-r--r--. 1 root root 24 Mar 11 10:11 test.sh
2、shift ,参数左移,通过上面两种方式获取参数,更丝滑
#!/bin/bash appdir=$1/$2 app_name=$2 shift 2 startup_parameter="$*" cd $appdir this_pid=$(cat ${app_name}_pid) kill -9 ${this_pid} if [ "$startup_parameter" != 'None' ];then nohup java -jar *.jar ${startup_parameter} &> startup.log & echo $! > ${app_name}_pid else nohup java -jar *.jar &> startup.log & echo $! > ${app_name}_pid fi