设为首页 收藏本站
查看: 935|回复: 0

Advanced Bash-Shell Guide(Version 10) 学习笔记三

[复制链接]

尚未签到

发表于 2018-8-29 09:21:46 | 显示全部楼层 |阅读模式
  书上的脚本比较多 记录比较有用的脚本
  更好的方式检查命令行参数是否为数字
40 # E_WRONGARGS=85 # Non-numerical argument (bad argument format).  
41 #
  
42 # case "$1" in
  
43 # "" ) lines=50;;
  
44 # *[!0-9]*) echo "Usage: `basename $0` lines-to-cleanup";
  
45 # exit $E_WRONGARGS;;
  
46 # * ) lines=$1;;
  
47 # esac
  更好的方式检查命令行参数数量是否正确
1 E_WRONG_ARGS=85  
2 script_parameters="-a -h -m -z"
  
3 # -a = all, -h = help, etc.
  
4
  
5 if [ $# -ne $Number_of_expected_args ]
  
6 then
  
7 echo "Usage: `basename $0` $script_parameters"
  
8 # `basename $0` is the script's filename.
  
9 exit $E_WRONG_ARGS
  
10 fi
  更好的方式检查是否在正确的目录
63 # cd /var/log || {  
64 # echo "Cannot change to necessary directory." >&2
  
65 # exit $E_XCD;
  
66 # }
  备份源目录的文件并且在目标目录解压
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)  
一个更加有效的脚本是
  
cd source/directory
  
# tar cf - . | (cd ../dest/directory; tar xpvf -)
  

  
cp -a /source/directory/* /dest/directory
  
# cp -a /source/directory/* /source/directory/.[^.]* /dest/directory
  
#这个复制源目录的隐藏文件
  备份最近24小时内改变的文件
#!/bin/bash  

  
BACKUPFILE=backup-$(date +%m-%d-%Y)
  
archive=${1:-$BACKUPFILE}
  
# 如果在命令行中没有指定参数,就是用如下的格式
  
# it will default to "backup-MM-DD-YYYY.tar.gz."
  

  
tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
  
gzip $archive.tar
  
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
  如果文件太多或者文件名有空白字符,上面的脚本可能出错
  更好的备份方案   tar -r 追加到归档文件
# -------------------------------------------------------------------  
# find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"
  

  
# find . -mtime -1 -type f -exec tar rvf "$archive.tar" '{}' \;
  
exit 0
  获取命令行参数的最后一个参数
args=$# # Number of args passed.  
lastarg=${!args}
  
# Note: This is an *indirect reference* to $args ...
  
# Or: lastarg=${!#}
  ${file#*/} :拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
  ${file##*/} :拿掉最后一条 / 及其左边的字符串:my.file.txt
  ${file#*.} :拿掉第一个 . 及其左边的字符串:file.txt
  ${file##*.} :拿掉最后一个 . 及其左边的字符串:txt
  ${file%/*} :拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
  ${file%%/*} :拿掉第一条 / 及其右边的字符串:(空值)
  ${file%.*} :拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
  ${file%%.*} :拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557991-1-1.html 上篇帖子: Advanced Bash-Shell Guide(Version 10) 学习笔记二 下篇帖子: shell脚本抓取问题进程(守护进程)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表