加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell 命令替换

发布时间:2020-12-15 22:53:09 所属栏目:安全 来源:网络整理
导读:1、命令替换, 有两种方式 方式一:`command` 方式二:$(command) 2、应用场景 在命令中通过命令替换的方式,将某些子命令的结果嵌入到当前命令中。 3、举例 例1: 获取系统所用用户并输出。?? // 命令形式 cat /etc/ passwd | cut -d " : " -f 1 #!bin/ bash

1、命令替换,有两种方式

  方式一:`command`

  方式二:$(command)

2、应用场景

  在命令中通过命令替换的方式,将某些子命令的结果嵌入到当前命令中。

3、举例

  例1: 获取系统所用用户并输出。??

// 命令形式
cat
/etc/passwd | cut -d ":" -f 1
#!bin/bash
# 命令替换,bash脚本形式

index=1

for user in `cat /etc/passwd | cut -d ":" -f 1 `
do
        echo "This is $index user: $user"
        index=$(($index + 1))
done

  例2: 根据系统时间输出今年或者明年的年份

$ date
输出:2019年 03月 24日 星期日 10:12:25 CST

$ date +%Y   
输出:2019

$ echo "This is $(($(date +%Y) + 1)) year"
输出:This is 2020 year

  例3: 根据系统时间获取今年过去多少个星期,还剩下多少个星期?

#!bin/bash

days=$(date +%j)

# 获取日期的第一位,如果是0.则必须处理掉,否则不能参加运算
index0=${days:0:1}

# 如果日期第一位为0,例如083,则删掉掉0
if [ $index0 == "0" ]
then
days=${days:1}
fi

echo "今年过去 $days 天"
echo "今年过去 $(($days / 7)) 个星期"

echo "今年还剩下 $((365 - $days)) 天"
echo "今年还剩下 $(((365 - $days) / 7))" 个星期

?  例4:判断 nginx 进程是否启动,如果没启动,则启动

#!bin/bash

# 判断 ngnix进程是否启动,如果没有启动,则启动

# grep -v grep 是过滤掉grep nginx这个进程
# 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

?

总结:` ` 和 $() 是等价的,初学者推荐使用 $()。缺点是 有极少数的 unix 不支持 $(),但都支持 ` `

  $(()) 主要用来做整数运算,包括加减乘除,引用变量前可以加 $,也可以不加 $,比如:

  num1=100, num2=10

  echo $(($num1 + $num2))? 等价于 echo $((num1 + num2))? ? ?// 这也证明了 shell 语法是不规范的

  ((num1++))? ((num--))? 可以实现自增和自减

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读