跳到主要内容

Shell脚本基础语法

· 阅读需 2 分钟

阅读量

0

阅读人次

0
amass
一个正在躺平的板砖人

基本在所有的项目中都能见到shell脚本的身影。

$0:当前脚本的文件名

$n:传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$#:传递给脚本或函数的参数个数。

$*:传递给脚本或函数的所有参数。

$@:表示所有脚本参数的内容

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

$?:上个命令的退出状态,或函数的返回值。

$$:当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

BASH_SOURCE[0]等价于BASH_SOURCE, 取得当前执行的shell文件所在的路径及文件名。

# -f 文件存在
if[ -f /etc/sysconfig/network ]; then
./etc/sysconfig/network
fi

# -z 字串为空/ -o or / -a and
if[ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi

# -e filename 如果 filename存在,则为真
if [ ! -e /proc/mounts ]; then
mount -n -t proc /proc /proc
fi


# -d 目录存在
if [ ! -d /proc/bus/usb ]; then
modprobe usbcore >/dev/null 2>&1
else
mount ...
fi