Bash
從腳本本身中辨識 shell 腳本的子 shell 編號
我不小心想從腳本本身中顯示子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
每次都會遞增。