shell总结

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、需要花括号:数组的引用、字符串处理、变量初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值