Shell中的变量符号详解

XyHalcyon / 2023-05-15 / 原文

Shell中的变量符号说明

变量 说明
$# 传给脚本的参数个数
$0 脚本名称
$1 传给脚本的第一个参数,数字表示第几个参数,以此类推
$@ 传给脚本的参数列表
$* 传给脚本的参数列表,有双引号时,表示参数合并为一个参数
$$ 脚本当前运行进程的ID
$! 获取上一个进程的ID
$? 获取上一个进程执行的结果,0表示成功,其他值表示失败

代码示例

*与@比较

有双引号时

#!/bin/bash

cnt=1
for i in "$*"
do
    echo Number of $cnt parameter is: $i
    (( cnt++ ))
done

echo

cnt=1
for i in "$@"
do
    echo Number of $cnt parametre is: $i
    (( cnt++ ))
done

结果输出

Number of 1 parameter is: hello world, are you ok?

Number of 1 parametre is: hello
Number of 2 parametre is: world,
Number of 3 parametre is: are
Number of 4 parametre is: you
Number of 5 parametre is: ok?

代码说明

脚本内部引用无双引号时,均表示参数列表

引用有双引号时,\$*会将所有入参看作一个参数