shell相关知识

1)shell中判断变量为空时  if [ ! $a ];then 
[ -n str1 ]     #str1字符串长度不为0则true
[ -z str1 ]     #str1字符串长度为0则true
[ -d dir ] #判断是否存在目录,有为真
[ -z $aa -o -z $bb ] #判断变量aa或者变量bb有一个为空即成立
[ -z $aa -a -z $bb ] #判断变量aa和变量bb都为空即成立
2)字符串在shell中可以直接比较,使用=、>、< 等,大于和小于需要转义
如果字符串是数字还是需要使用-gt、-lt等

3)shell脚本中函数里的位置变量和整个脚本的位置变量($1、$2)不会冲突,可以定义多个$1,$2等

4)2 > /dev/null  可以把登录的警告信息屏蔽,方便在shell中使用
2是标准错误

5)shell的set -e和set -x
set -e 只要脚本发生错误,就会终止执行
脚本执行期间,某个命令返回值非0就会自动退出
注:当多个命令使用管道连接时,set -e只判断最后一个命令的返回值
set +e 关闭该功能

6)set -x 输出命令执行的结果时同时会输出执行的哪个命令,方便进行排
1)数组的值进行循环
a='1 2 3' for m in `echo $a` do 可以1 2 3 各执行一次,适合多个变量重复脚本 done
数组的值循环
test=($(ls / ))
for i in ${test[@]}

2)while循环和for循环,for循环确认次数,while不确认
while true    一直为真
while read line  读取文件,默认按行读入
while read -r line  原样读取,不把\作为转义符
command | while read line   command命令的输出作为循环的输入

3)for循环的自增
b=10
num=2
for ((a=1;a<=$b;a+=$num)) 或者 ((a=1; a<=$b; a++))
do
done
1)命令执行控制
&&   command1 && command2   只有命令1返回真(0),命令2才执行
||   command1 || command2   只有命令1返回假(非0),命令2才执行
shell中的[]和[[]]对比
[]和test命令等价,用于判断文件、判断字符串、判断整数
支持的运算符只有==和!=,整数比较使用 -eq、-ne等等,逻辑组合是使用-a或者-o
[[]]属于加强版,支持字符串的模式匹配,如正则等,同时逻辑组合可以使用&&或者||,但是和-a、-o不同,可以执行命令控制
[[]] 左边是字符串,右边不加引号可以使用通配符,加引号是普通字符串
后续脚本建议使用 [[]]

2)每次自加1
a=0
((a++))

3)数值的三种运算方式
let 命令
(())命令
expr 表达式

4)shell的EOF是End of File的缩写,表示自定义终止符,EOF可以用其它字符代替,如FF等
EOF通常和<<一起使用
<<EOF        #开始
命令1
命令2
...
EOF            #结束,需要顶格写
一般用于有交互式的情景,如连接到mysql,切换库,查语句,退出等

 

posted @ 2023-10-18 16:05  菜菜陈  阅读(21)  评论(0)    收藏  举报