zoukankan      html  css  js  c++  java
  • shell编程系列3--命令替换

    shell编程系列3--命令替换
    
    命令替换
    
    
    命令替换总结
    方法1 `command`
    方法2 $(command)
    
    例子1:
    获取系统的所有用户并输出
    
    for循环能以空格、换行、tab键作为分隔符
    
    [root@localhost shell]# cat example_1.sh 
    #!/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
    
    [root@localhost shell]# sh example_1.sh 
    this is 1 user: root
    this is 2 user: bin
    this is 3 user: daemon
    this is 4 user: adm
    this is 5 user: lp
    this is 6 user: sync
    this is 7 user: shutdown
    this is 8 user: halt
    this is 9 user: mail
    this is 10 user: operator
    this is 11 user: games
    this is 12 user: ftp
    this is 13 user: nobody
    this is 14 user: systemd-network
    this is 15 user: dbus
    this is 16 user: polkitd
    this is 17 user: sshd
    this is 18 user: postfix
    this is 19 user: ajie
    this is 20 user: chrony
    this is 21 user: deploy
    
    例子2:
    根据系统时间计算今年或明年
    echo "this is $(date +%Y) year"
    echo "this is $(( $(date +%Y) + 1)) year"
    
    [root@localhost shell]# echo "This is $(date +%Y) year"
    This is 2019 year
    [root@localhost shell]# echo "This is $(($(date +%Y) + 1)) year"
    This is 2020 year
    [root@localhost shell]# echo "$((20+30))"
    50
    
    例子3:
    根据系统时间获取今年还剩下多少星期,已经过了多少星期
    # 今天是今年的第多少天
    date +j
    
    # 今年已经过去了多少天
    echo "this year have passed $(date +%j) days"
    echo "this year have passed $(($(date +%j) / 7)) weeks"
    
    # 今年还剩余多少天
    echo "there is $((365 - $(date +%j))) days before new year"
    echo "there is $(((365 - $(date +%j)) / 7 )) weeks before new year"
    
    总结:
    ``和$()两者是等价的,但推荐初学者使用$(),易于掌握;缺点是极少数UNIX可能不支持,但``两者都支持
    $(())主要用来进行整数运算,包括加减乘除,引用变量前面可以加$,也可以不加$
    
    $(( (100 + 30) / 13 ))
    num1=20;num2=30
    ((num++));
    ((num--));
    $(( $num1 + $num2 * 2))
    
    语法不是很严格
    
    是否加$都会计算
    [root@localhost shell]# num1=50
    [root@localhost shell]# num2=70
    [root@localhost shell]# echo "$(($num1 + $num2))"
    120
    [root@localhost shell]# echo "$((num1 + num2))"
    120
    
    4.例子4:
    判断nginx进程是否存在,如果没有需求拉起这个进程
    
    [root@localhost shell]# cat example_3.sh 
    #!/bin/bash
    #
    
    nginx_process_num=$(ps -ef|grep nginx|grep -v grep|wc -l)
    
    if [ $nginx_process_num -eq 0 ];then
    systemctl start nginx
    fi
  • 相关阅读:
    paip.提升安全性时间判断
    paip.提升安全性本机硬件绑定
    paip.提升性能服务器环境及编程语言架构选择
    paip.提升用户体验提示语
    paip.提升效率输入框不能粘贴的问题
    paip.银联支付接口订单号uuid算法
    paip.Net Framework各个版本的功能不同总结
    Answer 3.0 .NET开源网站功能API说明
    Paip.YXSHOP易想商场功能模块说明
    paip.提升效率文件搜索工具总结
  • 原文地址:https://www.cnblogs.com/reblue520/p/10918874.html
Copyright © 2011-2022 走看看