| 在这里, 
    ${...}告诉 shell 展开花括号里的内容a就是需要操作的变量%告诉 shell 需要在展开字符串之后从字符串的末尾去掉某些内容gg是被去掉的内容 这个特性在转换文件格式的时候会比较有用,我来举个例子: ImageMagick 是一套可以用于操作图像文件的命令行工具,它有一个 convert命令。这个convert命令的作用是可以为某个格式的图像文件制作一个另一格式的副本。 下面这个命令就是使用 convert为 JPEG 格式图像image.jpg制作一个 PNG 格式的图像副本image.png: convert image.jpg image.png
 在很多 Linux 发行版中都预装了 ImageMagick,如果没有预装,一般可以在发行版对应的软件管理器中找到。 继续来看,在对变量进行展开之后,就可以批量执行相类似的操作了: i=image.jpgconvert $i ${i%jpg}png
 这实际上是将变量 i末尾的"jpg"去掉,然后加上"png",最终将整个命令拼接成convert image.jpg image.png。 如果你觉得并不怎么样,可以想象一下有成百上千个图像文件需要进行这个操作,而仅仅运行: for i in *.jpg; do convert $i ${i%jpg}png; done
 就瞬间完成任务了。 如果需要去掉字符串开头的部分,就要将上面的 %改成#了: $ a="Hello World!"$ echo Goodbye${a#Hello}Goodbye World!
 参数展开还有很多用法,但一般在写脚本的时候才会需要用到。在这个系列以后的文章中就继续提到。 合并输出最后介绍一个花括号的用法,这个用法很简单,就是可以将多个命令的输出合并在一起。首先看下面这个命令: echo "I found all these PNGs:"; find . -iname "*.png"; echo "Within this bunch of files:"; ls > PNGs.txt
 以分号分隔开的几条命令都会执行,但只有最后的 ls命令的结果输出会被重定向到PNGs.txt文件中。如果将这几条命令用花括号包裹起来,就像这样: { echo "I found all these PNGs:"; find . -iname "*.png"; echo "Within this bunch of files:"; ls; } > PNGs.txt
 执行完毕后,可以看到 PNGs.txt文件中会包含两次echo的内容、find命令查找到的 PNG 文件以及最后的ls命令结果。 需要注意的是,花括号与命令之间需要有空格隔开。因为这里的花括号 {和}是作为 shell 中的保留字,shell 会将这两个符号之间的输出内容组合到一起。 另外,各个命令之间要用分号 ;分隔,否则命令无法正常运行。 【编辑推荐】 
    【责任编辑:庞桂玉 TEL:(010)68476606】为什么Linux系统管理员需要编程技能如何在Linux中检查密码的复杂性/强度和评分?在Linux中如何删除文件中的空行一文掌握 Linux 性能分析之网络篇如何在Linux中安装、配置和使用Fish Shell? 点赞 0
 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |