Shell 脚本
一点点追加。
Bash 变量
Bash 变量分为:环境变量和自定义变量。
环境变量
环境变量是 Bash 环境自带的变量,进入 Shell 时已经定义好了,它们通常时系统定义好的,也可以由用户从父 Shell 传入子 Shell。
自定义变量
自定义变量是用户在当前 Shell 里自己定义的变量,仅在当前 Shell 可用。一旦退出 Shell,该变量就不存在了。
特殊变量 - 脚本内
脚本文件内部可以使用特殊变量:
$0
:脚本文件名,即script.sh
$1~$9
:对应脚本的第一个参数到第九个参数$#
:参数的总数$@
:全部的参数,参数之间使用空格分隔
解析一个示例:
dir=`cd $(dirname $0) && pwd` # 注意等号两边不要有空格
# $0 => 即脚本文件名(包含你进入的目录)./shells/echo.sh
# $(dirname $0) => 输出文件目录,包裹住使得不会被 `echo` 解析成两部分 ./shells
# 完成的 => 进入目录,并获取其完整路径 /home/shanyuhai/code/shells
条件语句
if
if [ expression ]
then
Statement(s) to be executed if expression is true
fi
# if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ... ?else? ?bodyN?
then
语句中为常规执行语句,而 expression
判断表达式提供了一些快捷判断。
1. 文件判断
[ -a file ]
:如果file
存在,则为 true[ -d file ]
:如果file
存在且是一个目录,则为 true[ -f file ]
:如果file
存在且是一个普通文件,则为 true
2. 字符串判断
[ -n string ]
:如果字符串string
长度大于 0,则为 true[ -z string ]
:如果字符串string
长度为 0,则为 true