zoukankan      html  css  js  c++  java
  • Shell 命令替换

    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--))  可以实现自增和自减

  • 相关阅读:
    九九乘法表
    杨辉三角
    显示计算机界面
    完善3.2
    杨辉三角形
    100以内的素数
    九九乘法表
    杨辉三角
    九九乘法表
    杨辉三角形
  • 原文地址:https://www.cnblogs.com/shenqidu/p/10587150.html
Copyright © 2011-2022 走看看