shell脚本基础-语法

一 变量

[root@T_FOOT-Home2-ZZZ01 ~]# a=hello
[root@T_FOOT-Home2-ZZZ01 ~]# echo $a
hello
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${a}_world
hello_world

其实$a和${a}作用相同,但是为了防止字符串在拼接时,计算机无法区分变量和拼接的字符串,所以需要加上{}

二 提取命令的输出

[root@T_FOOT-Home2-ZZZ01 ~]# pwd
/root
[root@T_FOOT-Home2-ZZZ01 ~]# echo $(pwd)
/root

三 条件赋值(${var:-/=/?/+string})

1 ${var:-string}:是指如果var为空,那么就输出string的值,如果var不为空,那么就输出var的值

2 ${var:=string}:是指如果var为空,那么就输出string的值,并且把string的值赋给var,如果var不为空,那么就输出var的值

3 ${var:?string}:是指如果var为空,那么就输出错误信息 -bash: var: string,如果var不为空,那么就输出var的值

4 ${var:+string}:和${var:-string}相反,如果var为空,那么打印var的值,如果var不为空,那么就打印string的值

四 $((exp))

[root@T_FOOT-Home2-ZZZ01 ~]# echo $((3+2))
5

五 模式匹配替换

${var%pattern},${var%%pattern} 从右边开始匹配

${var#pattern},${var##pattern} 从左边开始匹配

${var%pattern},${var#pattern} 表示最短匹配,匹配到就停止

${var%%pattern},${var##pattern} 表示最长匹配

通配符

*:表示零个或多个任意字符

?:表示零个或一个字符

[...]:表示匹配中括号里面到字符

[!...]:表示不匹配括号里面到字符

[root@T_FOOT-Home2-ZZZ01 ~]# f=a.tar.gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f##*.}
gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f#*.}
tar.gz
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%%.*}
a
[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%.*}
a.tar  

六 提取字节

[root@T_FOOT-Home2-ZZZ01 ~]# echo ${f:0:2}
a.

获取f从下标为0的字节以后两个字节

[root@T_FOOT-Home2-ZZZ01 ~]# echo  ${f:1}
.tar.gz

提取f从下标为1的字节之后到所有字节

七 字符串替换

${file/dir/path}:将第一个dir 替换为path

${file//dir/path}:将全部dir 替换为 path

${#var}:可计算出变量值${var}的长度

八 输出重定向

echo "hello world" >> tempfile 将hello world复制到tempfile文件中,再打印出来

九 输入重定向

wc << flag

其本质就是把输入到内容缓存下来作为命令输出

十 流程控制

if-then语句

if xx1 then

 xx1s

elif xx2 then

 xx2s

else 

 xx3s

fi

十一 case

case ... esac

十二 for

十三 while

十四 until

十五 break和continue

十六 test命令

参照连接 https://blog.csdn.net/aimarrow/article/details/80870180

你可能感兴趣的:(shell脚本基础-语法)