Linux拓展之子shell
  TEZNKK3IfmPf 2023年11月12日 14 0

概述

在脚本中可以通过 command_out=$(COMMANDS) 来读取命令序列的输出结果,这种方法就被称为子 shell(subshell)。如:

command_out=$(ls | cat -n)
echo $command_out

还有下面这种语法,也能获取命令的输出结果:

# 语法
command_out=`COMMANDS`
# 示例
command_out=`ls | cat -n`
echo $command_out
应用

下面是关于子 shell 的应用:

利用子 shell 生成一个独立的进程

子 shell 本身是独立的进程,可以使用 () 操作符来定义一个子 shell。例如:

# 查看当前所在目录
pwd;
# 在子shell中切换到 /home/ 目录下,再打印当前目录下的文件列表
(cd /home/; ls);
# 在子shell之外,查看当前所在目录,没有任何改变,说明子shell中的改变不会影响到外部的shell
pwd;

Linux拓展之子shell

即当命令在子 shell 中执行时,不会对当前 shell 有任何影响,所有的改变都仅限于子 shell 中。

通过引用子 shell 的方式保留空格和换行符

如果我们通过子shell或者反引用的方法将命令的输出结果保存到一个变量中,可以将其放入到双引号 ""中,会保留空格和换行符 '\n'。这在脚本编程中很有用。例如:

out=$(cat test.txt)
echo $out # 不会保留换行符
echo "$out" # 会保留换行符
echo '$out' # 只会输出字符串本身

Linux拓展之子shell

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   52   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   31   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   29   0   0 linuxbind
  TEZNKK3IfmPf   25天前   31   0   0 shell
  TEZNKK3IfmPf   2024年05月31日   40   0   0 linuxshell
TEZNKK3IfmPf