shell的命令替换和命令组合
2017-08-20 21:42
375 查看
Linux中使用反引号"``"(脱字符,在波浪线的按键上)或者$()来执行命令替换。使用括号()来组合一系列命令。
使用$()可以让括号里的命令提前于整个命令运行,然后将执行结果插入在命令替换符号处。由于命令替换的结果经常交给外部命令,不应该让结果有换行的行为,所以默认将所有的换行符替换为了空格(实际上所有的空白符都被压缩成了单个空格)。
例如:
使用双引号引用可以保留空白符。
从上面大概可以知道,命令替换分为两个过程:(1)开启子shell执行其中的命令(2)将子shell中的输出结果打包插入在命令行中。但打包输出结果的过程是可以控制的(例如上面使用双引号)。
很多时候,在命令行中需要使用"cat a.txt|command"或者执行$(cat a.txt)来传递文件a.txt中的内容,但这不是最好的方法。它们等价的效率更高的方法分别是"<a.txt"和"$(<a.txt)"。
如果使用括号将一系列命令包围,可以使得这些命令独立于当前bash环境运行。这其实是一个命令组。
例如:
回到系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
[root@xuexi ~]# echo what date it is? $(date +%F) what date it is? 2016-09-25 [root@xuexi tmp]# echo what date it is? `date +%F` # 或者使用反引号
使用$()可以让括号里的命令提前于整个命令运行,然后将执行结果插入在命令替换符号处。由于命令替换的结果经常交给外部命令,不应该让结果有换行的行为,所以默认将所有的换行符替换为了空格(实际上所有的空白符都被压缩成了单个空格)。
例如:
[root@xuexi ~]# echo -e "a\nb" a b
[root@xuexi ~]# echo `echo -e "a\nb\t \tc"` a b c
使用双引号引用可以保留空白符。
[root@xuexi ~]# echo "`echo -e "a\nb\t \tc"`" a b c
从上面大概可以知道,命令替换分为两个过程:(1)开启子shell执行其中的命令(2)将子shell中的输出结果打包插入在命令行中。但打包输出结果的过程是可以控制的(例如上面使用双引号)。
很多时候,在命令行中需要使用"cat a.txt|command"或者执行$(cat a.txt)来传递文件a.txt中的内容,但这不是最好的方法。它们等价的效率更高的方法分别是"<a.txt"和"$(<a.txt)"。
如果使用括号将一系列命令包围,可以使得这些命令独立于当前bash环境运行。这其实是一个命令组。
例如:
[root@xuexi ~]# (umask 077;touch new.txt;ls -l new.txt) -rw------- 1 root root 0 Aug 13 22:46 new.txt
回到系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/7401591.html
注:若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!
相关文章推荐
- shell的命令替换形式(反引号和$(命令))
- linux下超强命令(shell语句)组合
- Shell命令中的扩展和替换
- shell 文本替换命令
- Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
- shell中命令的替换
- linux下超强命令(shell语句)组合
- Shell替换:Shell变量替换,命令替换,转义字符
- 在shell中使用sed命令替换/为\/
- linux下超强命令(shell语句)组合
- Shell替换:Shell变量替换,命令替换,转义字符
- Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
- Shell入门教程:命令替换 $() 和 ``
- 关于Shell中命令替换$(...)与后置引用`...`的不同
- shell ,sed命令用变量替换字符串,单引号改为双引号
- Shell 中的命令替换及参数扩展 | Linux 中国
- shell学习三十六天----命令替换
- Linux下Shell脚本中几种基本命令的替换区别
- Shell替换:Shell变量替换,命令替换,转义字符
- shell学习笔记(2)替换命令··与()的区别