1、条件测试
控制操作符
1、“ ;” 两条命令只有顺序关系,没有逻辑关系
2、“ && ”,只有第一条命令执行成功,才会执行后面的
3、“A || B” 只要其中一条执行成功即可 ,A成功不会执行B,A不成功才会执行B
if语句
for循环
#!/bin/bash
for i in aa bb cc dd
do
echo $i
done
for i in {1..5}
do
echo $i
done
for i in $(cat ./test.txt)
do
echo $i
done
for ((i=1;i<=9;i++))
do
for((j=1;j<=i;j++))
do
echo -n "$i*$j=$[i*j] "
done
echo
done
注意:
1、$(echo Yes) 这种形式将命令的执行结果作为变量等价于`echo Yes`
2、$[a+b]和for循环中的变量可以不用$修饰
3、[ a == b ] 是条件测试
4、$[a+b] 等价于$((a+b))
5、echo "a+b" |bc
while循环
综合
1、变量赋值不能有空格;
2、单引号不会扩展 $a ,双引号会扩展,``反引号等同于$(cat ls -l)
3、shell脚本有两种变量引用方式 $x ${x}
4、【运算符号$[ ] 】内变量可以不用$符号去引用 a=1; b=2 ;$[a+b]; ===》 $((a+b))
5、read -p "please input age" i (-p:可以输入描述信息用于交互)
read -s i(-s:隐藏交互信息)
read -t 3 i (-t:3秒未输入返回)6、echo -n 不回车
echo -e "\033[34mOK\033[0m" 增加扩展属性:颜色属性7、grep 可以通过执行某条命令后 通过管道手动抓取某些信息
ifconfig ens33 |grep "inet "也可以直接抓取某些信息通过某些文件或者路径
grep "model name" /proc/cpuinfo
grep -r "model name" ./8、条件测试需要有空格 [ -z "$a" ]
9、tr命令删除多余字符
hcc@ubuntu:~$ echo "aaaabc" | tr -s "a"
abc10、cut 命令过滤某一列 : -d 以什么为分隔符 -f 第几列
hcc@ubuntu:~$ head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
hcc@ubuntu:~$
hcc@ubuntu:~$
hcc@ubuntu:~$
hcc@ubuntu:~$
hcc@ubuntu:~$ ^C
hcc@ubuntu:~$ cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync11、if [ 条件测试 ];then //if后面也需要空格 ,条件测试也需要,中间的执行语句不需要
fi
如果if 多个条件需要[[ $a==$b && $c==$d ]]
12、for i in 1 2 3 //for 后面也需要空格,中间的执行语句不需要
do
echo "i=$i"
done
for ((i=1;i<5;i++)) //for 后面也需要空格,中间的执行语句不需要
do
echo "i=$i"
done
for i in {1..10} //省略做法
do
echo "i=$i"
done
for i in $(cat xxx.txt) //也可以将某条命令作为变量的来源
do
echo "i=$i"
done