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