Shell 嵌套壳
我有两个shell脚本:Shell 嵌套壳,shell,Shell,我有两个shell脚本: $ cat a #!/bin/sh set -o xtrace ./b $ cat b #!/bin/sh set -o xtrace echo Oook. $ ./a + ./b + echo Oook. Oook. 是否可以将shell设置为从单独的脚本嵌套xtrace输出?我想看看: $ ./a + ./b ++ echo Oook. Oook. 请注意,可以在同一脚本的子shell中看到嵌套的xtrace输出: $ cat c #!/bin/sh set
$ cat a
#!/bin/sh
set -o xtrace
./b
$ cat b
#!/bin/sh
set -o xtrace
echo Oook.
$ ./a
+ ./b
+ echo Oook.
Oook.
是否可以将shell设置为从单独的脚本嵌套xtrace输出?我想看看:
$ ./a
+ ./b
++ echo Oook.
Oook.
请注意,可以在同一脚本的子shell中看到嵌套的xtrace输出:
$ cat c
#!/bin/sh
set -o xtrace
echo $(yes | head -c1)
$ ./c
++ yes
++ head -c1
+ echo y
y
我认为不可能使用未经修改的
a
脚本。但是,如果您能够/愿意修改脚本调用,可以通过寻找合适的脚本来完成。即:
$ cat a
#!/bin/sh
set -o xtrace
. ./b # Note: sourcing ./b
$ ./a
+ . ./b
++ set -o xtrace
++ echo Oook.
Oook.
$
我可以更改
a
脚本,但是它会输出另一个+set-o xtrace
行。我不想在hashbang行中移动-o xtrace
,因为直接运行解释器可以忽略参数sh./a
,恐怕您将不得不使用额外的集合-o xtrace
。毕竟,这是一个命令,您请求跟踪命令。如果确实需要,您可以轻松地过滤输出。