文章目录
- 基本语法
- 基于语法
- awk(分割命令返回值)
- sed(处理行内容)
- 融合正则指令
- 条件语句
- 条件判断符
- 1. if
- 2. while
- 额外方法
- 在脚本中使用命令行指令并获取返回值
- 延时
- 打印当前时间
基本语法
基于语法
awk(分割命令返回值)
- 基本语法:
- 默认
awk
不加参数时,默认以空格为分割符; awk -F “:”
(以:
为分隔符);- 需要注意的是:如果有多行的输出,那么awk会默认处理多行信息,如果需要指定某一行,可以继续往下看
sed
指令;
- 默认
echo xxxx | awk '{print $n}' # 第一个xxxx部分是命令行打印出来的东西,第二个n是指打印空格分割后的第几个内容
Example
:
# 以:为分隔符,并打印第部分元素
echo "a:b:c:d" | awk -F ":" '{print $1}'
# 以空格为分隔符,并打印第2部分元素
echo "a:b c:d" | awk '{print $2}'
# 默认处理多行信息,如果需要指定某一行,需要加上sed指令,可以继续往下看
gpustat | awk '{print $1}'
sed(处理行内容)
- 基本语法:
- 取出某一行内容:
sed -n 'xp'
,x
是指指定的行数,从1开始计数,第一行即为1;
- 取出某一行内容:
command sed -n 'xp' # 这里的command是指能返回多行信息的命令
Example
:
# 取出第一行内容
gpustat | sed -n '1p'
分别取出指定行内容:
融合正则指令
- 取出第1行以空格为分割的第2个单元内容:
# 命令 第一行 以空格为分割的第2个单元内容
command | sed -n '1p' | awk '{print $2}'
Example
:
gpustat | sed -n '1p' | awk '{print $2}' # 取出第1行第2个内容,Sun
gpustat | sed -n '2p' | awk '{print $7}' # 取出第2行第7个内容,89°
完了它居然降温了,本来应该是89°的QAQ…
条件语句
条件判断符
- 数字比较条件:比较两个整数谁大谁小,是否相等;
-eq
:等于-ne
:不等于-le
:小于等于-ge
:大于等于-lt
:小于-gt
:大于
用if
条件举例使用方法:
if [ num1 compare num2 ]
then
xxx # do something
fi
# example 1:
if [ 1 -lt 2 ]
then
echo "1 < 2"
fi
1. if
- 基本语法:
if condition
then
xxx # do something
fi
Example
:
if true
then
echo "if I love you"
fi
2. while
- 基本语法:
while condition
do
xxx
if condition2
then
break # 退出while循环
fi
done
Example
:
while true
do
echo "I love you"
if true
then
break
fi
done
额外方法
在脚本中使用命令行指令并获取返回值
- 需要注意的是:在使用该命令时,最好返回值是个数字或者较易处理的字符串或表格;
var=$(command) # var为command命令的返回值
# 需要注意的点:
# 1. =不能有空格
# 2. command需要用$()的形式包起来
首先在命令行中直接执行命令查看结果:
ps -ef | grep python | grep -c train.py
随后我们在bash文件中使用该命令获取返回值:
num_process=$(ps -ef | grep python | grep -c train.py) #
echo "num_process is $num_process"
延时
sleep second # 此处填写秒数
# 例子
sleep 5 # 等待5s
打印当前时间
- 可以放在脚本中或者直接在命令行输入:
echo $(date +%Y-%m-%d\ %H:%M:%S)
参考文章:
- bash笔记之awk
- bash学习之sed
- 条件判断:Bash条件判断
- shell脚本打印出时间