shell 脚本--命令替换

                             语法格式
方法一                       `command`
方法二                       $(command)

案例1:获取系统的所有的用户名 使用下面的命令是直接输出到屏幕上了

#  cut 命令 -d 是指定的分隔符 -f 指的分隔开的第几段
~: cat /etc/passwd | cut -d ":" -f 1
root
daemon
bin
sys
...

而我们想用输出的用户名做操作 就需要用到反引号

#!/bin/bash
#将 cat /etc/passwd | cut -d ":" -f 1 的结果直接拿来用
for user in `cat /etc/passwd | cut -d ":" -f 1`
do
	echo $user
done

 使用$() 和反引号`的效果是一样的

#!/bin/bash
for user in $(cat /etc/passwd | cut -d ":" -f 1)
do
	echo $user
done

案例2 : 根据系统时间计算今年或者明年

~:$ date
2019年 10月 26日 星期六 15:46:34 CST
~:$ date +%Y
2019

写入到脚本中可以使用

#!/bin/bash
echo This is $(date +%Y) year

计算明年的时间  使用 $() 是命令替换 ,使用$(( ))  中间的操作可以被视作算数运算

#!/bin/bash
echo This is $(($(date +%Y) + 1)) year
~$ num1=50
~$ num2=70
~$ echo "$(($num1 + num2))"
120

案例3: 今年剩余多少星期,已经过了多少星期

#!/bin/bash
echo "今年已经过了 $(($(date +%j) / 7 )) 星期,还剩 $(((365 - $(date +%j)) / 7)) 个星期"

案例4:判断 nginx进行是否存在,若不存在则自动拉起该进程

#!/bin/bash
# -v  是为了过滤掉本身 grep的进程  wc -l  是统计前面过滤之后还剩余的个数
nginx_process_num=$(ps -ef | grep nginx | grep -v grep | wc -l)
if [ $nginx_process_num -eq 0 ];then
	systemctl start nginx
fi

猜你喜欢

转载自blog.csdn.net/ChaoLi_Chen/article/details/102757198