美文网首页
90.读鸟哥私房菜3|学习shell脚本2

90.读鸟哥私房菜3|学习shell脚本2

作者: 人生玩家Eli | 来源:发表于2022-11-11 20:46 被阅读0次
    cover20220907.png

    例子

    使用日期命名文件

    #!/bin/bash
    # 创建三个文件,名称由"用户输入+日期"构成
    
    echo -e "我将使用'touch'命令创建3个文件"
    read -p "请输入一个文件名:" fileuser
    
    filename=${fileuser:-"filename"}
    
    date1=$(date --date='2 days ago' +%Y%m%d)
    date2=$(date --date='1 days ago' +%Y%m%d)
    date3=$(date +%Y%m%d)
    
    file1=${filename}${date1}
    file2=${filename}${date2}
    file3=${filename}${date3}
    
    touch "${file1}"
    touch "${file2}"
    touch "${file3}"
    
    • 变量赋值:

      • 等号左右不能有空格
      • 如果值中有空格,要用引号把值引起来
    • 输出变量的值:

      • echo $PATHecho ${PATH}
    • "-"与":-"

    echo ${name-"eli"}# 当name为空时,输出"eli",否则输出变量name的值
    echo ${name:-"eli"}# 当name为空或空字符串时,输出"eli",否则输出变量name的值
    
    • 获取命令的值,可以这样`pwd`,也可以这样$(pwd)

      • 所以$(date --date='2 days ago' +%Y%m%d)表示获取date命令的值
    • date命令

    date +%Y/%m/%d_%H:%M:%S # 输出时间
    
    date -d "+1 second" +%Y/%m/%d_%H:%M:%S         # 输出下一秒
    date -d "+1 day" +%Y/%m/%d_%H:%M:%S         # 输出明天的时间
    date -d "+2 day" +%Y/%m/%d_%H:%M:%S         # 输出后天时间
    date -d "-1 day" +%Y/%m/%d_%H:%M:%S         # 输出昨天时间
    date -d "2 day ago" +%Y/%m/%d_%H:%M:%S      # 输出前天时间
    date --date="3 day ago" +%Y/%m/%d_%H:%M:%S  # 输出大前天时间
    
    date -s 20120523                # 设置时间
    date -s 01:01:01                # 设置时间
    date -s "2012-05-23 01:01:01"   # 设置时间
    date -s "20120523 01:01:01"     # 设置时间
    

    简单的加减乘除

    #!/bin/bash
    # 输入两个整数,输出乘积。
    
    echo -e "输入两个整数,\n"
    
    read -p "第一个数:" firstnum
    read -p "第二个数:" secondnum
    
    total=$((${firstnum}*${secondnum}))
    
    echo -e "\n${firstnum} x ${secondnum} = ${total}"
    
    • var=$((运算内容)) 运算符号有"+ - * / %"等等
      • echo $((13 % 3))结果为1
    • 还可以通过bc这个指令来做运算,
      • echo "1.3*3.2" | bc 结果为4.1
      • echo "1.3*3.200" | bc 结果为4.160

    通过bc计算pi

    #!/bin/bash
    # 计算pi的值
    
    read -p "请输入pi的小数位数:" checking
    num=${checking:-"10"}
    
    echo "请耐心等待..."
    
    time echo "scale = ${num}; 4*a(1)" | bc -lq
    
    • scale的值表示小数位数
    • 4*a(1)是bc中计算pi的函数

    不同执行方式的差异(source, sh script, ./script)

    sh script./script这两种方式会使用一个新的bash环境来执行脚本内的指令。

    source会在当前bash环境下执行脚本。

    这也是为什么,在使一些配置文件生效时,用的是source

    source ~/.bashrc source /etc/profile

    相关文章

      网友评论

          本文标题:90.读鸟哥私房菜3|学习shell脚本2

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