shell脚本

shell执行脚本是一门解释性语言、批量化处理语言,大大的节省了工作成本

shell脚本第一行必须以 #!开头,它表示该脚本使用后面的解释器解释执行。

#!/bin/bash

1.常见的通配符:

* : 匹配0个或多个任意字符

? : 匹配一个任意字符

[若干字符] : 匹配方括号中任意一个字符的一次出现

2.命令代换:
反引号``  或者  $()

//查某个容器的编号,赋值给num变量

num=$(docker ps -a | grep -i "test" | awk '{print$1}')

3.单引号和双引号

Shell脚本中的单引号和双引号一样都是字符串的界定符,单引号用于保持引号内所有字符的字面值,而双引号有些情况则特殊。如果字符串中有特殊字符需要处理时就用双引号。

注:单引号标注的字符中不能再出现单引号。

 4.条件判断 流程控制
  "if" 表达式 如果条件为真则执行then后面的部分:
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi

通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等

例如:

#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
 echo "your login shell is the bash (bourne again shell)"
else
 echo "your login shell is not bash but $SHELL"
fi

5.输出变量前加$。例如:echo $num 或者明确一些 echo ${num}

6.执行shell脚本。先修改脚本权限增加可执行:chmod +x filename

然后,您可以通过输入: ./filename 来执行您的脚本。或者sh filename

7.SED 命令,替换数据

1.把开头/结尾为str1的行替换为str2:

sed -i 's/^str1.*/str2/'  filename  ###以str1开头
sed -i 's/.*str1$/str2/'  filename  ###以str1结尾
sed -i 's/.*str1.*/str2/'  filename  ###含有str1
sed -i 's/旧字符串/新字符串/g' filename

2.将文件中含 "arr" 字符串的数据行中的 "str1" 字符串 , 替换成为 "str2" 字符串:

sed -e '/arr/s/str1/str2/g' filename  ##含有g说明是全局替换

3.将文件中第 5 行数据 , 替换成句子"hello world!!!"

sed -e '5chello world!!!' filename

4.将文件中 1 至 100 行 , 替换成如下两行:

how are you?
my name is feige.

命令如下:

sed -e '1,100c
How are you?
my name is feige.
' filename

删除数据

1.删除空行:

sed -e '/^ *$/d' filename   ### *号前面有一个空格符哦~

2.删除含有指定字符串str的行:

sed -f '/str/d' filename

移动数据

1.将文件中的前 100 数据 , 搬到文件中第 300 后输出。其命令如下:

sed -f mov.txt  targetfile  ## targetfile是要操作的文件,mov.txt里面放的是操作指令

其中mov.txt文档的内容为:

1,100{
H
d
}
300G

2.将from.txt文件中含 "phi" 字符串的数据行 , 移动到to.txt文件中储存。其命令如下:

sed -e '/phi/w to.txt'  from.txt

3.将 from.txt文件内容 , 移动至to.txt文件中含 "beta" 字符串的数据行。其命令如下:

sed -e '/beta/r  from.txt' to.txt

搜索数据

1.将文件中含 "omega" 字符串的数据输出:

sed -f grep.txt  targetfile

其中grep.txt的内容如下:

/omega/b
N
h
s/.*
//
/omega/b
g
D
原文地址:https://www.cnblogs.com/huangxiaoying/p/6598859.html