shell脚本语言echo
1.显示不普通字符串
#!/bin/bash
echo "iPhone X say hello world"
2.显示转义字符
#!/bin/bash
echo "\"iPhone X say hello world\""
3.显示变量
#!/bin/bash
name="jam"
echo "${name} is boy"
4.显示换行 \n
错误写法:
#!/bin/bash
echo "iPhone X say hello world \n but it is so expansive"
正确写法
#!/bin/bash
echo -e "iPhone X say hello world \n but it is so expansive"
5.不显示换行 \n
#!/bin/bash
echo -e "iPhone X say hello world\c"
echo "but it is so expansive"
6.显示一个执行命令
#!/bin/bash
echo `date` #(`是~按键,在数字1的左边)
7.退出命令:
语法: exit 状态码 -> 退出程序
#!/bin/bash
iphone="404 not found"
echo ${iphone}
exit
echo "over"
状态码
状态码 | 含义 |
0 | 指令执行成功 |
1 | 一般性未知错误 |
2 | 不适合shell指令 |
126 | 不可执行 |
127 | 没找到命令 |
130 | 通过control+c终止命令 |
255 | 正常范围内退出状态码 |
8.重定向(核心内容)
内容二: shell脚本的数组
1.语法
数组名=(value1 value2 value3)
2.1初始化数组
方式一
#!/bin/bash
array=("404 not found" "Andy" "Tom" "Lilei" "zhangsan")
# 输出 echo $数组名 默认打印第一个元素
echo $array
方式二
#!/bin/bash
name=()
name[0]="404 not found"
name[1]="Andy"
name[2]="Tom"
name[3]="Lilei"
name[4]="zhangsan"
echo ${name[3]}
2.2数组的读取
${数组名[数组下标]} 表示输出对应下标的数据
${数组名[@]或[*]}表示输出所有的数据
*将所有元素组合成一个字符串
@将所有元素逐一输出
2.3数组的长度
获取数组的元素个数:${#数组名[@]} ->获取所有的元素,并获取个数
获取数组中字符串的单个元素的长度:-> ${#数组名[元素下标]}
1.语法 ./文件名称.sh param1 param2 param3 参数之间用空格隔开
./hello.sh "小明" "小猪" "小狗"
#!/bin/bash
value1=${1}
value2=${2}
value3=${3}
# 逐一输出参数
echo "${value1} ${value2} ${value3}"
# 输出参数个数
echo ${#}
echo ${*} 打印所有的参数,合并成一个字符串
echo ${@} 打印所有的参数,逐一打印
1.算数运算符:
运算符 | 语法代码 | 例子 | 解析 |
+ | a+b | #!/bin/bash a=1 b=1 c=`expr $a + $b` echo ${c} 输出:2 |
expr是固定语法两个元素相加(两个加数之间用空格) |
- | a-b | #!/bin/bash a=1 b=1 c=`expr $a - $b` echo ${c} 输出:0 |
expr是固定写法两个元素相减 |
* | a*b | #!/bin/bash a=2 b=100 c=`expr $a \* $b` echo ${c} 输出:200 |
expr是固定写法两个元素相乘,需用\转译* |
/ | a/b | #!/bin/bash a=2 b=100 c=`expr $a / $b` echo ${c} 输出:0 不能整除 显示0 |
expr是固定写法两个元素相除 |
% | a%b | #!/bin/bash a=2 b=100 c=`expr $a % $b` echo ${c} 输出:0 |
expr是固定写法两个元素求余数 |
= | a=b | #!/bin/bash a=2 b=100 c=$b echo ${c} 输出:100 |
赋值运算 |
== | a==b | a=84883 b=93859 if [ $a == $b ] then echo "a等于b" else echo "a不等于b" fi 输出:a不等于b |
恒等运算符 必须if空格[] |
2.关系运算符
运算符 | 语法代码 | 例子 | 解析 |
-eq | a -eq b | #!/bin/bash a=100 b=2 if [ $a -eq $b ] then echo "a等于b" else echo "a不等于b" fi 输出结果:a不等于b |
判断两个元素是否相等,相等返回true |
-ne | a -ne b | #!/bin/bash a=100 b=2 if [ $a -ne $b ] then echo "a不等于b" else echo "a等于b" fi 输出结果:a不等于b |
判断两个元素是否不相等,不相等返回true |
-gt | a -gt b | #!/bin/bash a=100 b=2 if [ $a -gt $b ] then echo "a大于b" else echo "a小于b" fi 输出结果:a大于b |
判断左边数是否大于右边,大于返回true |
-lt | a -lt b | #!/bin/bash a=100 b=2 if [ $a -lt $b ] then echo "a大于b" else echo "a小于b" fi 输出结果:a小于b |
判断左边数是否小于右边,小于返回true |
-le | a -le b | #!/bin/bash a=100 b=2 if [ $a -le $b ] then echo "a小于b" else echo "a大于b" fi 输出结果:a大于b |
判断右边数是否大于左边,大于返回true |
-ge | a -ge b | #!/bin/bash a=2 b=200 if [ $a -ge $b ] then echo "a小于b" else echo "a大于b" fi 输出结果:a大于b |
判断右边数是否小于左边,小于返回true |
3.布尔运算符
运算符 | 语法代码 | 例子 | 解析 |
!("!") | !=, !a, !b | #!/bin/bash a=2 b=200 if [ $a != $b ] then echo "a不等于b" else echo "a等于b" fi 输出结果:a不等于b |
非 |
-o("or->|") | condition1 -o condition2 |
#!/bin/bash a=2 b=200 if [ $a != $b -o $a -eq 100 ] then echo "a != b" else echo "a == b" fi 输出结果:a != b |
或运算,有一个表达式 为true,返回true |
-a("and->&") | condition1 -a condition2 |
#!/bin/bash a=2 b=200 if [ $a != $b -a $a -eq 100 ] then echo "success" else echo "falure" fi 输出结果:falure |
与运算,所有表达式为 true,返回true |
4.逻辑运算符
运算符 | 语法代码 | 例子 | 解析 |
&& | condition1 && condition2 |
#!/bin/bash a=2 b=200 if [ $a != $b ] && [ $a -eq 100 ] then echo "success" else echo "falure" fi 输出结果:falure |
逻辑与,条件都成立,才成立 |
|| | condition1 || condition2 |
#!/bin/bash a=2 b=200 if [ $a != $b ] || [ $a -eq 100 ] then echo "success" else echo "falure" fi 输出结果:success |
逻辑或,条件满足其一, 就成立 |
5.字符串运算符
运算符 | 语法代码 | 例子 | 解析 |
= | a = b | #!/bin/bash a="success" b="falure" if [ $a = $b ] then echo "is equal" else echo "is not equal" fi 输出结果:is not equal |
判断两个字符串是否相等,相等返回true |
!= | a != b | #!/bin/bash a="success" b="falure" if [ $a != $b ] then echo "is not equal" else echo "is equal" fi 输出结果:is not equal |
判断两个字符串是否相等,不相等返回true |
-z | -z a | #!/bin/bash a="success" if [ -z $a ] then echo "string is null" else echo "string not null" fi 输出结果: string not null |
检测字符串的长度是 否零,长度为0返回true |
-n | -n a | #!/bin/bash a="success" if [ -n "$a" ] then echo "string not null" else echo "string is null" fi 输出结果: string not null |
检测字符串的长度是 否零,长度不为零返回true |
无 |
$a | #!/bin/bash a="success" if [ $a ] then echo "string not null" else echo "string is null" fi 输出结果: string not null |
检测字符串是否为空,不为空返回true |
6.文件处理运算符
运算符 | 语法代码 | 例子 | 解析 |
-d | -d a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -d $file ] then echo "it is path" else echo "it is not path" fi 输出结果:it is path |
检测一个字符串是不是一个文件目录,是就返 回true |
-r | -r a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -r $file ] then echo "it is read" else echo "it is not read" fi 输出结果:it is read |
检测文件是否可读,如果可读放回true |
-w | -w a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -w $file ] then echo "it is witre" else echo "it is not witre" fi 输出结果:it is witre |
检测文件是否可写,如果可写返回true |
-x | -x a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -x $file ] then echo "it is enable" else echo "it is unenable" fi 输出结果:it is enable |
检测文件是否可执行,如果可以执行返回true |
-f | -f a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -f $file ] then echo "it is normal" else echo "it is not normal" fi 输出结果:it is normal |
如果是普通文件,返回true |
-s | -s a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -s $file ] then echo "it is not null" else echo "it is null" fi 输出结果:it is not null |
判断文件是否为空,如果为空返回fales,如果不为空返回true |
-e | -e a | #!/bin/bash file="/Users/avalanching/Desktop/hello.sh" if [ -e $file ] then echo "it is existence" else echo "it is not existence" fi 输出结果:it is not null |
检测文件是否存在,如果存在返回true,如果不存在返回false,文件夹和文件皆适用 |
内容五.条件控制语句
1.if
语法:
if [condition]
then
code
fi
2.if-else
语法:
if [condition]
then
code
else
code
fi
3.if-else if-else
语法:
if [condition]
then
code
elif [condition]
then
code
else
code
fi
4.for循环
for 变量名 in item1 item2 item3
do
code
done
e.g NO.1:
#!/bin/bash
for name in "Jar" "Andy" "Tom" "Jam"
do
echo ${name}
done
e.g NO.2:
#!/bin/bash
for name in "I don\`t know"
do
echo ${name}
done
e.g NO.3:
#!/bin/bash
list="I don't know"
for value in ${list}
do
echo $value
done
e.g NO.4:
#!/bin/bash
file="/Users/avalanching/Desktop/java/*"
for path in ${file}
do
echo ${path}
done
e.g NO.5
#!/bin/bash
for ((a=0; a<5; a++))
do
echo "a=${a}"
for ((b=0; b
5.while循环
#!/bin/bash
a=1
while (($a<10))
do
a=`expr $a + 1`
echo ${a}
done
无限循环
#!/bin/bash
while :
do
echo "hello world"
done
或
#!/bin/bash
while true
do
echo "hello world"
done
或者
#!/bin/bash
for ((;;))
do
echo "hello world"
done
6.case语句
#!/bin/bash
case vale in
value1)
code
;;
value2)
code
;;
value3)
code
;;
esac
e.g:
#!/bin/bash
number=${1}
case $number in
1)
echo "第一个";;
2)
echo "第二个";;
esac
7.until循环
语法结构:
#!/bin/bash
until
do
code
done
e.g:
#!/bin/bash
i=1
until (($i>1))
do
echo "i=${i}"
i=`expr $i + 1`
done
8.跳出循环
8.1 break 跳出单个循环
#!/bin/bash
for ((i=0;i<4;i++))
do
echo "第${i}次循环"
if [ $i == 5]
then
echo "退出循环"
break
fi
done
8.2 break 跳出内部循环
#!/bin/bash
for ((i=0;i<10;i++))
do
echo "外层第${i}次循环"
for ((j=0;j
8.3 break 跳出外部循环
#!/bin/bash
for ((i=0;i<10;i++))
do
echo "外层第${i}次循环"
for ((j=0;j
break number: number表示退出的循环层数
9.continue
#!/bin/bash
for ((i=0;i<10;i++))
do
echo "外层循环第${i}次"
for ((j=0;j