Shell脚本编写笔记

读取外部输入

echo -n "enter:" ##-n :不换行
read 存放的变量

控制流 if / while / for

读取文件内容

while read line
do 
	  body ##通常对变量line进行处理
done < 文件名

循环n次

while [ $i -lt $num]
do
  body
done

判断文件夹不存在的情况:

if [ ! -d "文件夹" ]; then 
	body
fi

变量使用

$变量名
var=$(command) #变量接收命令值

在echo命令中使用变量需要用双引号:

echo "print my $变量"
echo "print my ${变量}"

在shell中,会对双引号里面的内容进行转义,但是对单引号的不会

变量运算

let '++i' 
let '--i'

函数编写

function func(){
	body
}
##参数我一般直接用全局变量
## 返回值用echo $? 获取

Awk

awk '{[pattern] action}' {filenames}

例子:

awk -F, '{print $1,$4}' log.txt #-F相当于内置变量FS, 指定分割字符,输出文本中的1、4项
awk -v  # 设置变量

Sed

语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明

  • -e