zoukankan      html  css  js  c++  java
  • (原创)鸟哥linux学习script shell相关笔记

          在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录

    1.

    [root@www scripts]# vi sh03.sh
    #!/bin/bash
    # Program:
    #	Program creates three files, which named by user's input 
    #	and date command.
    # History:
    # 2005/08/23	VBird	First release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    # 1. 让使用者输入文件名称,并取得 fileuser 这个变量;
    echo -e "I will use 'touch' command to create 3 files." # 纯粹显示资讯
    read -p "Please input your filename: " fileuser         # 提示使用者输入
    
    # 2. 为了避免使用者随意按 Enter ,利用变量功能分析档名是否有配置?
    filename=${fileuser:-"filename"}           # 开始判断有否配置档名
    
    # 3. 开始利用 date 命令来取得所需要的档名了;
    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}
    
    # 4. 将档名创建吧!
    touch "$file1"                             # 底下三行在创建文件
    touch "$file2"
    touch "$file3"

    在这里面,有两个是比较不理解的

    a. filename=${fileuser:-"filename"} # 开始判断有否配置档名

    这个是shell进行变量判断的方式,如下表

    变量配置方式 str 没有配置 str 为空字符串 str 已配置非为空字符串
    var=${str-expr} var=expr var= var=$str
    var=${str:-expr} var=expr var=expr var=$str

    是第二种情况的形式,下面直接把这条语句拆分分二种情况来看

    1)当fileuser没有配置或者为空字符串的时候,filename=filename,因为filename本身是一个变量,所以使用"filename"或者'filename',这就是单纯的字符串了。最终运行的结果,就是创建了三个filename20130908类似的文件

    2)当fileuser有赋值的时候,filename=$fileuser,这种情况下创建 的是wang20130908的文件,这个wang是输入的fileuser.

    b. date1=$(date --date='2 days ago' +%Y%m%d) 

    这个可以使用man date来查看date的参数,

    date --date='2 days ago' 是显示2天前的时候,这个时候的显示还是类似这样子的显示格式

    [root@localhost scripts]# date --date='2 days ago'

    Tue Sep 3 15:16:40 CST 2013

    date +%Y%m%d是把显示的格式,在+号前是有个空格的,不能少

    [root@localhost scripts]# date +%Y%m%d
    20130905

  • 相关阅读:
    软件定义网络基础---REST API的设计规范
    软件定义网络基础---REST API概述
    软件定义网络基础---北向接口协议概述
    软件定义网络基础---SDN控制平面
    软件定义网络基础---NETCONF协议
    判断是否是完全二叉树
    G: 又见模法师
    欧拉定理+欧拉筛选法
    hdu-2036求任意多边形面积
    hdu1754 区间更新查询(单点更新+查询求区间最大值)
  • 原文地址:https://www.cnblogs.com/virtualnet/p/3302838.html
Copyright © 2011-2022 走看看