符号 | 意义 |
---|---|
$0 | 获取当前执行的shell脚本文件名 |
$$ | 获取执行shell脚本的进程号 |
$n | 获取当前执行的shell脚本的第n个参数值,n=1…9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10} |
$# | 获取当前shell命令行中参数的总个数 |
$? | 获取执行上一个指令的返回值(0为成功,非0为失败) |
变量
a=tt #如果有空格a = tt 表示比较
a='tt'
b="$a" 双引号可解析变量a
#查看变量:
#方式一: $变量名
#方式二: "$变量名"
#方式三: ${变量名}
#方式四:标准使用方式 "${变量名}"
#取消变量: unset 变量名
c=`ps` 或 c=$(ps) 可执行命令ls
${变量名:起始位置:截取长度} 字符串截取
# ${变量名:-默认值} 变量a如果有内容,那么就输出a的变量值; 变量a如果没有内容,那么就输出默认的内容
# ${变量名:=默认值} 如果变量没有定义,将默认值赋值给变量
# ${变量名:+提示信息} 当脚本获取的参数时提示已经获取到参数
a="$1"
echo "您选择的套餐是: 套餐 ${a:-1}"
echo "国家法定结婚年龄(男性)是 ${a:=22} 岁"
echo "${a:+已经获取到第一位的参数}"
进阶
n1 -eq n2 相等
n1 -gt n2 大于
n1 -ge n2 大于等于
n1 -lt n2 小于
n1 -le n2 小于等于
n1 -ne n2 不等于
str1 == str2 str1和str2字符串内容一致
str1 != str2 str1和str2字符串内容不一致,!表示相反的意思
&& ||
# 文件表达式
-f 判断输入内容是否是一个文件
-d 判断输入内容是否是一个目录
-x 判断输入内容是否可执行
[ -x age.sh ] || echo "文件没有执行权限"
#计算表达式
$(( 计算表达式 ))
let 计算表达式
i=1
let i=i+7
echo $i
echo "file1.txt" > file.txt #覆盖的方式输入到右侧文件中
echo "file1.txt" >> file.txt #追加
# if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
elif [ "$1" == "nv" ]
then
echo "您的性别是 女"
else
echo "您的性别,我不知道"
fi
# case语句使用场景
case "$1" in
"start")
echo "服务启动中..."
;;
"stop")
echo "服务关闭中..."
;;
"restart")
echo "服务重启中..."
;;
*)
echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
;;
esac
# for语句的使用示例
for i in $(ls /root)
do
echo "${i}"
done
# while的示例
a=1
while [ "${a}" -lt 5 ]
do
echo "${a}"
a=$((a+1))
done
# until的示例
a=1
until [ "${a}" -eq 5 ]
do
echo "${a}"
a=$((a+1))
done