鸟哥Linux私房菜之学习Shell Scripts(1)

发表于:2009-11-26 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  利用 date 进行档案的建立

  想象一个状况,如果我每天要进行备份,而备份的数据又不想被覆盖掉,也就是说, 我想要将每天备份的数据放在不同的档案中。哇!这真困扰啊?难道要我每天去修改 script ? 不需要啊!因为每天的『日期』并不相同,所以我可以将档名取成类似: backup.20050802 , 不就可以每天一个不同档名了吗?呵呵!确实如此。好了,接下来出个例子: 我想要建立三个空的档案,档名最开头由使用者输入决定,假设使用者输入 filename 好了, 那今天的日期是 2005/08/23 ,我想要以前天、昨天、今天的日期来建立这个档案,亦即 filename_20050821, filename_20050822, filename_20050823 ,该如何是好?

  [root@linux scripts]# vi sh03.sh
  #!/bin/bash
  # Program:
  # User can keyin filename to touch 3 new files.
  # 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 the filename what you want: " 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

  我透过一些简单的动作,这些动作都可以在 bash 那一章里面找到, 包括小指令 (`) 的取得讯息、变量的设定功能、变量的累加以及利用 touch 指令辅助! 如果您开始执行这个 sh03.sh 之后,你可以进行两次输入,一次直接按 [Enter] 来查阅档名是啥? 一次可以输入一些字符,这样来判断你的档案喔!关于 date 的指令应用,请 man date 吧! ^_^

  --------------------------------------------------------------------------------

  数值运算的方法

  各位看官应该还记得,我们可以使用 declare 来定义变量的类型吧?! 这样才能够进行加减运算啊!可惜的是, bash shell 里头预设仅支持到整数的数据。 OK!那我们来玩玩看,如果我们要使用者输入两个变量,然后将两个变量的内容相乘, 最后输出相乘的结果,那可以怎么做?

  [root@linux scripts]# vi sh04.sh
  #!/bin/bash
  # Program:
  # User can input 2 integer to cross by!
  # History:
  # 2005/08/23        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  echo -e "You SHOULD input 2 number, I will cross they! "
  read -p "first number:  " firstnu
  read -p "second number: " secnu
  total=$(($firstnu*$secnu))
  echo -e " The number $firstnu x $secnu is ==>; $total"

  在数字的运算上,我们可以使用『 declare -i total=$firstnu*$secnu 』 也可以使用上面的方式来进行!基本上,鸟哥比较建议使用这样的方式来进行运算:

  var=$((运算内容))

  不但容易记忆,而且也比较方便的多~未来您可以使用这种方式来计算的呀!至于数值运算上的处理, 则有:+, -, *, /, %等等。 那个 % 是取余数啦~举例来说, 13 对 3 取余数,结果是 13=4*3+1,所以余数是 1 啊!就是:

  [root@linux scripts]# nu=$((13%3)); echo $nu

  1

  这样了解了吧?!多多学习与应用喔! ^_^

44/4<1234
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号