Bash

從腳本本身中辨識 shell 腳本的子 shell 編號

  • April 23, 2019

我不小心想從腳本本身中顯示子shell編號(BASH_SUBSHELL),但我得到了子shell 0

這是腳本的行

echo "Operated from subshell: $BASH_SUBSHELL

終端中 shell 的部分輸出

  • echo ‘從子shell操作:0’ 從子shell操作:0

問題是否可以從腳本本身中顯示腳本正在執行的子shell?

由於腳本不在子 shell 中執行,因此該輸出是正確的。子shell 是由一些東西創建的,包括括號( ... )、背景&和命令替換$( ... ),但不是通過啟動腳本來創建的:它創建了一個全新的 shell 來執行腳本。

您可能想到的是變數SHLVL隨著腳本(和 shell)的每一層遞增:

SHLVL每次啟動一個新的 Bash 實例時加一。這旨在計算您的 Bash shell 嵌套的深度。

如果您的腳本行是

echo "Operated from shell level: $SHLVL"

那麼你會得到我認為你期望的輸出。如果腳本遞歸,$SHLVL每次都會遞增。

引用自:https://unix.stackexchange.com/questions/514118