Shell 备忘
- $# 传递到脚本的参数的个数
- $* 以一个单字符串显示所有向脚本传递的参数,即是将参数当成一个字符串显示
- $$ 脚本运行的当前进程ID 号
- $! 后台运行的最后一个进程ID 号
1. Shell 数组
bash shell 只支持一维数组,不支持多维数组,语法格式如下:
array_name=(values1 values2 ... values)
读取数组如下:
${array_name[index]}
echo "数组的元素为:"${array_name[*]} # 显示所有的元素,下同
echo "数组的元素为:"${array_name[@]}
echo "数组的长度为:" ${#array_name[@]} #获取数组的长度
2. 运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
val=`expr 2 + 2`
echo "2+2=${val}" #注意:表达式和运算符之间要有空格,不然会原样输出
echo `expr 2 \* 2`
echo `expr 2 / 2`
3. test 命令
Shell 中的 test 命令用于检查某个条件是否成立,它可以进行数值,字符和文件三个方面的测试
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
num1=100
num2=200
if test ${num1} -eq ${num2}
then
#do code
else
#do others
fi
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为0则为真
-n 字符串 字符串的长度不为0则为真
str1="my name is rola"
str2="my name is ming"
if test ${str1} = ${str2}
then
#do code
else
#do others
fi
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读为真
-w 文件名 如果文件存在且可写为真
-x 文件名 如果文件存在且可执行为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真
if test -e ./bash
then
#do code
else
#do others
fi
4. 流程控制
if
if condition
then
#code
fi
########################################################
if condition
then
#code
else
#code
fi
########################################################
if condition
then
#code
elif condition
then
#code
else
#code
fi
for 循环
for var in list
do
#code
done
##################################################
while condition
do
#code
done
case
case 值 in
model 1)
# code
;;
model 2)
# code
;;
esac
#demo
read num
case $num in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '没有选择 '
;;
esac
# 在 case 中,用 **;;** 表示 break
5. 函数
[function] funname [()]
{
action;
[return]
}
# [] 为可选,如果没有return,默认以最后一条语句作为返回值
文件引入或者包含
. filename #注意前面有个点号
source filename