Shell 脚本常用命令使用

203 阅读1分钟

根据实际工作中的使用情况,整理些常用的脚本命令,方便再次用到时可以查阅,参考,后续有新的内容会更新。

函数定义

```
#主函数的定义
main(){
#函数体内可以直接写执行逻辑或者调用子函数
}
#子函数的定义
printInfo(){
#子函数的函数体
}
main
```

*.sh 文件中也并非一定要定义函数,可以直接按执行逻辑一行行的顺序书写。

文件处理

```
#创建文件夹===================================================
mkdir -p build/src
#删除文件夹内容===============================================
rm -f src/*
#查找文件=====================================================
#按文件名后缀在 src/ 路径下匹配
find src/ -name "*.apk" 
#移动文件=====================================================
mv srcFile.txt desFile.txt
#复制文件=====================================================
cp srcFile.txt desFile.txt
#读文件内容===================================================
#1.按行读取, cat 后要带上文件具体路径和名称,如果和脚本执行同目录,就用./
for line in `cat ./filename.txt`
do
#循环体,可在此获取line值
done
#写文件======================================================
#1.搜索分支并覆盖写入文件
git branch -a | grep "release-" > ./branches.txt
#2.向文件里追加内容
echo $branch_name >> ./branches.txt
```

循环

```
#for
#读文件内容,计数
index=0
for line in `cat ./filename.txt`
do
#循环体
((index++))
done
#----------------------------------
#while
#读文件内容,计数
index=0
while read line
do
#循环体
((index++))
done < ./filename.txt
```

字符串操作

```
#分割字符串为数组,例如 array=(${str//:/}),按:进行分割
array=(${str//分隔符/})
#过滤字符,例如 result=`echo $str | tr -d "a-zA-Z."`,过滤大小写字母和符号.
result=`echo $str | tr -d "要过滤的内容"` 
#取字符串指定位置及长度,例如 result=${str: 0: 3},从位置0开始取3个长度的字符
result=${str: 起始位置: 长度}
#判断字符串变量是否存在,表示 str 存在且有值
if [[ ${str} -gt 0 ]]; then 
#按关键字搜文本内容
result=`cat ./branches.txt | grep $str`
#判断字符串是否以指定字符开头,例如 if printf '%s' "$str" | grep -Eq '^Release-'; then,
#表示判断 str 是否以 Release- 开头
if printf '%s' "$str" | grep -Eq '^开头字符'; then 
#sed,用于对文本文件内容进行增删改操作
#expr,用于算术运算
```

压缩和解压文件

```
#打包成zip文件
zip -q -r zipName.zip . -i file1 file2 file3 
#打包成tar文件
tar -xvf tarName.tar srcFile.txt
#tar解压到当前路径下
tar -xvf $fileName
```