浅谈Linux bash脚本----获取脚本启动参数

${#}

用于获取传递给脚本的参数数目

params_count=${#}
echo $params_count
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> 2

${@}

用于获取传递给脚本的参数列表

params_list=${@}
echo $params_list
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> param1=p1 param2=p2

 ${0}

用于获取脚本文件名

script_name=${0}
echo $script_name
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> ./PATH/TO/my_script.sh

${1}

用于获取传递给脚本的第一个参数

param_1=${1}
echo $param_1
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> param1=p1

${2}

用于获取传递给脚本的第二个参数

param_2=${2}
echo $param_2
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> param2=p2

${*}

用于获取传递给脚本的参数字符串,注意:它是一个整体字符串,不是列表(说实话我没看出来)

params_string=${*}
echo $params_string
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> param1=p1 param2=p2

${?}

用于获取上一个命令的退出状态码

ls
last_return_code=${?}
echo $last_return_code
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> 0

0为ls命令执行成功的返回值

${$}

表示当前进程的PID

cur_pid=${$}
echo $cur_pid
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> 16598

${-}

用于获取当前的 shell 标志

bash_flag=${-}
echo $bash_flag
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> hB

其中字母的含义如下:

  • 如果含有 i,表示当前 shell 是交互式的(interactive)。
  • 如果含有 m,表示启用了监控模式(monitor mode)。
  • 如果含有 B,表示开启了终端宽度自适应功能(brace expansion)。
  • 如果含有 H,表示启用了历史文件追踪功能(history file tracking)。
  • 如果含有 h,表示启用了 hash 命令的记忆功能(hashall)。
  • 如果含有 P,表示启用了函数命令的跟踪功能(privileged)。
  • 如果含有 u,表示启用了 nounset 功能,对未定义变量进行报错(no unset)。
  • 如果含有 x,表示启用了脚本的调试模式(xtrace)。

${_}

用于获取上一个命令的最后一个参数

mkdir my_dir
last_cmd_param=${_}
echo $last_cmd_param
> ./PATH/TO/my_script.sh param1=p1 param2=p2
> my_dir

你可能感兴趣的:(linux,bash,运维)