shell常用(备份)

 

总览
变量
逻辑控制
shell环境
脚本应用
变量
a=1
b="hello,你好"
=左右不要有空格
如果内容有空格,需要使用单引号或者双引号
双引号支持转义
变量使用
echo$a
echo${b}
预定义变量
echo$PWD
echo$USER
echo$HOME
echo$~
echo$PATH
变量类型
字符串a="xx"
数字i=1314
布尔true,false
数组arr=(a b c)
函数foo(){echo hello world}
数字型变量操作·

计算i=1;echo$i;echo$((i+1))
更新((i=i+1));echo$i
浮点型计算awk'BEGIN{print1/3}'
字符串操作
a=“hello world”
${value:offset}
echo${a:4}输出oworld
${value:offset:length}
echo${a:4:6}输出oworl
${#array[*]}和${#array[@]}表示数组中元素个数
${value#patters}${value##pattern}#表示掐头echo${a#*l}echo${a##*l}
${value%patters}${value%%pattern}%表示去尾echo${a%o*}echo${a%%o*}
${value/pattern/string}${value//pattern/string}表示替换字符串echo${a/w/f}
布尔变量
true
false
命令执行返回值 $?
任何命令执行都会有一个返回值
0表示正确
非0表示错误
算数判断
[ 2 –eq 2 ] 相等
[ 2 –ne 2 ] 不等
[ 3 –gt 1 ] 大于
[ 3 –ge 3 ] 大于等于
[ 3 –lt 4 ] 小于
3 –le 3 ] 小于等于
(())也可以表示算术比较。((10>=8)) ,((10==10)),
字符串比较
[ string1 = string2 ] 如果两字符串相同,则结果为真
[ string1 != string2 ] 如果两字符串不相同,则结果为真
[ -n "$var" ] 如果字符串不是空,则结果为真
[ -z "$var" ] 如果字符串是空,则结果为真
[[ "xxxx" == x* ]] 在表达式中表示0或者多个字符
[[ xxx == x?? ]] 在表达式中表示单个字符
逻辑判断
[ 2 -ge 1 -a 3 -ge 4 ];echo $? 与
[ 2 -ge 1 -o 3 -ge 4 ];echo $? 或
[[ 2 -ge 1 && 3 -ge 4 ]];echo $? 与
[[ 2 -ge 1 || 3 -ge 4 ]];echo $? 或
[ ! 2 -ge 1 ];echo $?非
内置判断
-e file 如果文件存在,则结果为真
-d file 如果文件是一个子目录,则结果为真
-f file 如果文件是一个普通文件,则结果为真
-r file 如果文件可读,则结果为真
-s file 如果文件的长度不为0,则结果为真
-w file 如果文件可写,则结果为真
-x file 如果文件可执行,则结果为真
数组变量
array=(1 3 4 6)
array=(`ls`)
array[2]="hello world"
echo ${array[2]};
echo ${array[*]}
echo ${#array[*]}
if结构
if [ condition ] ; then …;fi
if [ condition ] ; then …;else …;fi
if [ condition ] ; then …;elif …;fi
简单的逻辑可以使用 && || 去替代
[ -f file ] && echo file exist || echo file not exist
for 循环
for(( c1 ; c2 ; c3 ));
do
… ;
done
for((i=0;i<10;i++));do echo $i;done
for变历循环
for f in $array[*];
do
…..
done
ss="aa bb cc dd";for x in $ss;do echo $x ;done
for x in `ls` ;do echo $x ;done
ss=(aa bb cc "sss dd");for x in "${ss[@]}";do echo $x ;done
while循环
while设置条件
i=0;
while ((i<3)) ;do
echo $i; ((i=i+1));
done
一行行的读取文件内容
while read line; do echo $line ; done < /tmp/tmp
退出控制
return 函数返回
exit 脚本进程退出
break 退出当前循环
continue 跳过当前的循环,进入下一次循环。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章