Linux Shell 命令行:Shell 命令行嵌套 0 个改进

你可在命令行中嵌入新的外壳程序进程。意思是除了命令行本身进程外可以执行新的外壳进程。可使用变量证明命令行中新外壳程序进程的生成。

语法:

echo $<variable>  
echo $(value)  
echo $<variable>  

举例:

$ echo $var  
$ echo $(var=Hyii ; echo $var)   
$ echo $var

Linux Shell Embedding1

见如上截图所示,第2个命令,使用 echo 显示命令展开 $(...) 的内容,而命令展开中的命令 var=Hyii; echo $var 运行在新建的外壳程序子进程中,其在子进程中给 $var 所赋值,随着命令行结束,新建的子进程退出。并不能被外部的外壳程序进程保留。因此,第3个命令,显示 $var 变量的值是不存在的。


反引号(`

可以使用反引号(`)命令展开代替 $(...) 命令展开。反引号(`)命令展开不可嵌套。

举例:

$ echo `cd Desktop; ls *.txt | grep file`  

Linux Shell Embedding2

见如上截图所示,使用反引号(`)命令展开将 cdlsgrep 命令嵌入 echo 命令行中。

注意: 其中 grep 命令用于模式匹配找到文件,它的使用后续指南会讲解。


反引号(`)和单引号(')的不同

反引号(`)和单引号(') 常常被混淆,但实际上它们代表完全不同的控制含义。

让我们通过一个例子了解它。

举例:

$ echo `var=Hii; echo $var`  
$ echo 'var=Hii; echo $var'  

Linux Shell Embedding3

见如上截图所示,反引号命令展开最终显示 $var 变量的值。而单引号把其括住的内容原样输出。


外壳程序选项

介绍两个外壳程序内置的 set 选项。默认,bash 外壳程序将未声明或未赋值的变量做为未绑定变量(变量无值)。

set -u 选项,使外壳程序对未定义变量的使用做为错误报警。

set +u 选项,静默不输出。

Linux Shell Embedding4

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!