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"
abc
10、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
sync
11、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
13
case $i in
1)
echo 1;;
2)
echo 2;;
*)
esae
14、字符串
(1)、子串截取
hcc@ubuntu:~$ echo ${test:1:3}
234
hcc@ubuntu:~$
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${test:1:-1}
2345
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${#test}
6
hcc@ubuntu:~$
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${test:1}
23456
(2)字符串替换:不会改变原来的值
hcc@ubuntu:~$ test=13356789
hcc@ubuntu:~$ echo ${test//3/x}
1xx56789
hcc@ubuntu:~$ echo ${test/3/x}
1x356789
(3)子串掐头
hcc@ubuntu:~$ A=`head -1 /etc/passwd`
hcc@ubuntu:~$ echo $A
root:x:0:0:root:/root:/bin/bash
hcc@ubuntu:~$ echo ${A#*:}
x:0:0:root:/root:/bin/bash
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${A##*:}
/bin/bash
hcc@ubuntu:~$ echo $A
root:x:0:0:root:/root:/bin/bash
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${A%:*}
root:x:0:0:root:/root
hcc@ubuntu:~$ echo ${A%%:*}
root
15、变量初始化
hcc@ubuntu:~$ ABC=123
hcc@ubuntu:~$ echo ${ABC:-235}
123
hcc@ubuntu:~$
hcc@ubuntu:~$ echo ${mm:-235}
235
【不需要加$ 的情况】
1、$[a+b]
2、for i in 1 23
3、let i++
【特殊情况】
1、如果if 多个条件需要[[ $a==$b && $c==$d ]]
2、test=(a b c) (数组的引用)
echo ${test[0]}
3、$[a] === $((a))
4、makefile也可以引用shell变量 需要用$$a 多行需要;\分开
3、grep -p a 抓取含a的字符
grep -w a 抓取单个字符a
4、需要花括号:数组的引用、字符串处理、变量初始化