Shell 命令替换

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

  方式一:`command`

  方式二:$(command)

2、应用场景

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

3、举例

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

1// 命令形式cat /etc/passwd | cut -d ":" -f 1 2 3#!bin/bash 4# 命令替换, bash脚本形式 5 6index=1 7 8for user in `cat /etc/passwd | cut -d ":" -f 1 ` 9do 10 echo "This is $index user: $user" 11 index=$(($index + 1)) 12done

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

1$ date 2输出:20190324日 星期日 10:12:25 CST 3 4$ date +%Y 5输出:2019 6 7$ echo "This is $(($(date +%Y) + 1)) year" 8输出: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 进程是否启动,如果没启动,则启动

1#!bin/bash 2 3# 判断 ngnix进程是否启动,如果没有启动,则启动 4 5# grep -v grep 是过滤掉grep nginx这个进程 6# wc -l 是统计输出多少行 7nginx_process_num=$(ps -ef | grep nginx | grep -v grep | wc -l) 8 9if [ $nginx_process_num -eq 0 ]; then 10 systemctl start nginx 11fi

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

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

  num1=100, num2=10

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

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Shell 命令替换 - HelloWorld