此篇介绍一下Shell命令相关的内容。

$0、$1、22、#、@@、*、$?

首先介绍一下 $0、$1、22、#、@@、*、$? 的含义。

比如执行以下命令:

/bin/test.sh a b c

命令 含义 备注
$0 表示文件路径和文件名 /bin/test.sh
$1、$2 表示第几个参数 如a、b,但如第10个要用${10}而非$10,1010相当于{1}0
$# 表示传入脚本的参数个数 此处为3,统计不包括$0
$@ 表示所有参数的列表 此处"a"、"b"、"c",不包括$0
$* 表示所有的参数 其值和 $@ 相同,但区别在于 $* 把所有参数合并成一个字符串,而 $@ 会得到一个字符串参数数组
$? 表示执行脚本命令后的返回值 命令执行成功时默认返回0

示例:

#!/bin/sh

for x in "$@"; do
echo $x
done

for x in "$*"; do
echo $x
done

执行 /bin/test.sh a b c 后输出:

a
b
c
a b c

& 和 wait

& 当要执行的命令以 & 结尾时,这个命令会在后台子 shell 执行
wait 当有多个耗时操作可以并发执行,且这些操作都执行完成后,再进行下一步操作,就可以使用 wait 命令来等待这些操作执行完成

例如:

command1 &
command2 &
wait