得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

shell 脚本传参

$ 传参家族

创建一个脚本 test.sh,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
echo $0 # 当前脚本的文件名(间接运行时还包括绝对路径)
echo $3 # $n,传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1
echo $# # 传递给脚本或函数的参数个数,不包括 $0

# $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号 ("") 包含时,都以"$1""$2" … "$n" 的形式输出所有参数;但是当它们被双引号 ("") 包含时,"$*" 会将所有的参数作为一个整体,以 "$1 $2 … $n" 的形式输出所有参数,"$@" 会将各个参数分开,以 "$1""$2" … "$n" 的形式输出所有参数
echo $* # 传递给脚本或函数的所有参数,不包括 $0
echo $@ # 传递给脚本或函数的所有参数,不包括 $0

echo $? # 上个命令的退出状态,或函数的返回值
echo $$ # 当前 Shell 进程 ID,对于 Shell 脚本,就是这些脚本所在的进程 ID
echo $_ # 上一个命令的最后一个参数
echo $! # 后台运行的最后一个进程的 ID 号

执行一波

1
2
3
4
5
6
7
8
9
10
$ ./test.sh test test1 test2 test3 test4
./test.sh # $0
test2 # $3
5 # $#
test test1 test2 test3 test4 # $*
test test1 test2 test3 test4 # $@
0 # $?
12305 # $$
12305 # $_
# $!

传参的好搭档 shift

shift 命令每执行一次,变量的个数 ($#) 减一,而变量值提前一位,不带参数的 shift 命令相当于 shift 1。如:shift 3 表示原来的 $4 现在变成 $1,原来的 $5 现在变成 $2 等等,原来的 $1、$2、$3 丢弃,$0 不移动

be slow to promise and quick to perform.