该问题已被锁定!
3
关注
782
浏览

求助一个shell脚本问题

查看全部 2 个回答

pagu 初级会员 用户来自于: 北京市
2018-09-11 22:20
在shell里边有个命令叫做 [b]xargs[/b],处理这个问题贼好用,因为用它可以批量化的生成文本内容,和管道配合起来的话就可以很方便的写出来批量化运行的脚本。   比如我在一个文件夹里边有一堆的文件夹,我想分别把它们给打包成压缩文件,每个文件夹对应一个,写这个命令的话大概是这样:[code]ls | xargs -i echo gzip -c {} \> {}.gz > ../cmd.sh[/code][code]运行以后查看上级目录中的cmd.sh,结果如下:[/code][code] [attach]204[/attach] [attach]205[/attach] [/code]命令解释:        使用管道将所有文件夹内容传递给xargs命令,xargs命令我差不多只用这一个参数  -i  ,使用 -i 以后可以把管道前边的内容给按行传递到后边,并且在后边的命令里边用一对花括号  {}  来代替;花括号也可以理解为把你的输入内容给一个一个当成了变量替换到了后边的命令中来运行; 用gzip来压缩文件夹的命令是:          gzip -c  ${folder}  >  ${folder}.gz 仔细看一下,命令是不是一样的? 这里用到echo主要是怕一次写出来的命令会有些问题,把命令输出到一个sh脚本里边检查一下再执行比较好,还能留个备份,将来出现啥问题的时候好回来查; 也正是因为有了echo命令,后边的定向符号  >  需要用反斜线  \  来转义,否则命令会出现错误     使用xargs注意的点:       后边命令中如果有  重定向符号 >  或者  后台运行符号  &  ,可能需要根据情况进行转义;       xargs后边的命令好像是不能再连接管道符号  |  

关于作者

问题动态

发布时间
2018-09-11 21:50
更新时间
2018-09-12 10:37
关注人数
3 人关注

推荐内容

如何使用wget命令下载“清华云盘”内的文件
All Rights Reserved Powered BY WeCenter V4.1.0 © 2024