shell脚本项目

项目 项目1

  • 自动产生当天的文件夹,提供每天写代码使用
  1. 判断有几个参数
  • xx.sh
  • xx.sh -y
  • xx.sh -y -m
  • xx.sh -y -m -d
    在用户主目录下创键年份的文件夹并读取当年年份
    自动生成当前年份文件夹:判断是否已存在;
    如果存在 提示已存在,如果不存在,创建
  1. 再读取当前月份:在2016文件夹下创建10月,自动生成当前月份文件夹:判断是否已存在,如果存在,提示已存在,如果不存在,提示创建
  2. 再读取当前号:在~/2016/10/下面创建号的文件夹:判断是否已经存在,如果存在,提示已经存在,如果不存在,创建,最后创建成功
file=`date +%Y/%m%d` echo "${file}"

  1. 万年历
  • 输入查询年份2016,再输入查询月份9
  • 1990.1.1星期一
  • 查询范围1990.1.1之后查询
  • 闰年判断条件(year%4==0&&year%100!=0)||(year%400==0)
  • 思路:计算1990.1.1~2016.8.31所有的天数
  • 十月 2016

日 一 二 三 四 五 六 1 2345678 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

  • 输出万年历
  1. 判断当年是否为闰年
  2. 如果是闰年,2月输出为29天
  3. 再求出当年前一年12月31号为星期几
  4. 然后打引当年1月份的日历,
$1 $2用法
test() { echo "$0" echo "$1" echo "$2" } test 1 2

  1. 函数里的$0与函数外的$0一样,表示shell本身 xx.sh.函数里的$1表示test调用时的第一个参数如上为1,函数里的$2,在test调时的第二个参如上为2
callwhat() { year=$1 month=$2 }if [ $1 -eq 0 ] then argument1=` date +%Y` argument2=` date +%m%d` callwhat "${argument1}" "${argument2}" elif [ $1 -eq 2 ] then argument1=$1 argument2=$2 callwhat "${argumet1}" "${argument2}" else echo "参数太多" fi

  • 注意点:
  1. callwhat里面的$1,$2表示调用callwhat时的第一个参数argument1,和第二个参数argument2;另外:argument1=$1 表示的是运行 ** ./xx.sh 2016 3** $1为外面的2016,$2为外面的3。此时的$1和$2与函数里的$1和$2代表的内容不同。这样再把argument1=$1里面的2016存到函数里的year里,argument2=$2里面的3存到month里。

    推荐阅读