美文网首页Shell学习笔记
Shell变量的高级用法(四)——命令替换

Shell变量的高级用法(四)——命令替换

作者: 醜捌怪 | 来源:发表于2022-01-21 17:37 被阅读0次

    命令替换

    语法 说明
    方法一 `command`
    方法二 $(command)

    说明:命令替换是指将命令的输出结果赋值给某个变量。``和$()两者是等价的。
    注意:$(())与$()不是同一个东西,比较容易混淆。$(())主要用来进行整数运算,包括加减乘除,引用变量前面可以加$,也可以不加$。

    示例

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

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

    输出:

    This is 1 user: User
    This is 2 user: Database
    This is 3 user: Note
    This is 4 user: that
    ......

    这里index=$(($index + 1))并不是命令替换,而是整数运算。cut命令对输入的字符进行分割,-d ":"表示:为分割符分割成多个子串。-f 1表示获取分割子串中的第一个。

    例子2:根据系统时间计算今年或明年。

    $ echo "This is $(($(date +%Y) + 1)) year"
    

    输出:

    This is 2023 year

    例子3:根据系统时间获取今年还剩下多少星期,已经过了多少星期。

    $ echo "This year have passed $(($(date +%j) / 7)) weaks"
    $ echo "This is $(((365 - $(date +%j)) / 7)) days before new year"
    

    输出:

    This year have passed 3 weaks
    This is 49 days before new year

    例子4:判定nginx进程是否存在,若不存在则自动拉起该进程。

    nginx_process_num=$(ps -ef | grep nginx | grep -v grep | wc -l)
    if [ $nginx_process_num -eq 0 ]; then
        systemctl start nginx
    fi
    

    这里将ps -ef | grep nginx | grep -v grep | wc -l命令执行之后的结果赋值给nginx_process_num变量。

    相关文章

      网友评论

        本文标题:Shell变量的高级用法(四)——命令替换

        本文链接:https://www.haomeiwen.com/subject/aaaehrtx.html