判断是否生成了子shell

判断是否生成了子shell

Content #

echo $BASH_SUBSHELL

如果该命令返回0,那么表明没有子shell。如果该命令返回1或者其他更大的数字,则表明存在子shell。

下面这个例子先后使用了命令列表和echo $BASH_SUBSHELL:

$ pwd ; ls test* ; cd /etc ; pwd ; cd ; pwd ; ls my* ; echo $BASH_SUBSHELL
/home/christine
test_file  test_one  test_two
/etc
/home/christine
my_file  my_scrapt  my_script  my_scrypt
0

在输出结果的最后是数字0。这表明并未创建子shell来执行这些命令。

如果改用进程列表,则结果就不一样了。

$ (pwd ; ls test* ; cd /etc ; pwd ; cd ; pwd ; ls my* ; echo $BASH_SUBSHELL)
/home/christine
test_file  test_one  test_two
/etc
/home/christine
my_file  my_scrapt  my_script  my_scrypt
1

这次在输出结果的最后是数字1。这表明的确创建了子shell来执行这些命令。

From #

Linux命令行与shell脚本编程大全

命令分组(command grouping)