目录
命令 | 功能描述 |
---|---|
$# | 获取参数个数 |
$* | 代表命令行中所有的参数,$*把所有参数看做一个整体 |
$@ | 代表命令行中所有的参数,不过$@把每个参数区分看待 |
$? | 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行。 |
1. 运算符的使用
1)基本语法
- $((运算式))
- $[运算式]
表达式 | 描述 |
---|---|
expr 1 + 2 | 加号两侧必须添加空格 |
expr 1 * 2 | *为Shell特殊变量,乘号必须加转义符,同时也必须添加空格 |
$[5*2] | *号两端有无空格都可以 |
$((5*2)) | *号两端有无空格都可以 |
a=$(expr 5*2) | 使用expr作为表达式赋值变量,为避免被作为字符串,需要将其添加()。 |
使用示例
#!/bin/bash
sum=$[$1 + $2]
echo sum=$sum
2 条件判断
1)基本语法
test condition
[ conditiom ] (注意中括号前后必须要有空格)
[ 2 = 8 ]
$?
2.1 两个整数判断
常用判断条件 | 描述 |
---|---|
-eq | 等于(equal) |
-ne | 不等于(not equal) |
-lt | 小于(less than)a=15 ; [ $a -lt 20 ] && echo "a<20" |
-le | 小于等于(less equal) |
-gt | 大于(greater than) |
-ge | 大于等于 (greater equal) |
2.2 按照文件执行权限进行判断
判断条件 | 描述 |
---|---|
-r | 有读权限(read)/ [ -r sum.sh ] |
-w | 有写权限(write) |
-x | 有执行权限(execute) |
2.3 按照文件类型进行判断
判断条件 | 描述 |
---|---|
-e | 文件存在(exsitence) |
-f | 文件存在并且是一个常规文件 |
-d | 文件存在并且是一个目录 |
流程控制
1. if判断
1.1 单分支
if [ 条件判断式 ];then
程序
fi
或
if [ 条件判断式 ]
then
程序
fi
多个条件判断采用逻辑与 && 或者逻辑或 ||
[ $age -gt 18 ] && [ $age -lt 35 ]; then echo ok; fi
if [ $age -gt 18 -a $age -lt 35 ];then echo ok;fi
1.2 多分支
if [ 条件判断 ]
then
程序
elif [ 条件判断 ]
then
程序
else
程序
fi
2.for循环
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
for 变量 in 列表
do
语句
done
示例
#!/bin/bash
str_array=(str1 str2 str3)
for str in ${str_array[*]}
do
echo "${str}"
done
#!/bin/bash
str_array=(str1 str2 str3)
for ((i=0; i<3; i++))
do
echo "$i ${str_array[i]}"
done
3 while循环语句
基础语法
while [ condition ]
do
command1
command2
...
done
示例
i=1
while [ $i -le 10 ]
do
echo $i
i=$((i+1))
done
4 读取控制台输入
基本语法
read (选项) (参数)
1)选项
-p: 指定提示符
-t: 指定读取值时等待的时间(秒)如果-t不加表示一直等待
-s: 不回显输入的字符
2)参数
变量:指定读取值的变量名
示例
#!/bin/bash
read -t 10 -p "please input your name :" name
echo "hello, $name"