Linux Shell程式設計(27)——子shell
執行一個shell指令碼時會啟動另一個命令直譯器. 就好像你的命令是在命令列提示下被解釋的一樣, 類似於批處理檔案裡的一系列命令.每個shell指令碼有效地執行在父shell(parent shell)的一個子程式裡.這個父shell是指在一個控制終端或在一個xterm視窗中給你命令指示符的程式.
shell指令碼也能啟動他自已的子程式. 這些子shell(即子程式)使指令碼並行地,有效率地地同時執行多個子任務.
一般來說,指令碼里的一個外部命令(external command)能生成(forks)出一個子程式,然而Bash內建(builtin)的命令卻不這樣做,因此,內建命令比起外部的等價命令執行起來更快.
圓括號裡的命令列表
( 命令1; 命令2; 命令3; ... )
嵌在圓括號裡的一列命令在一個子shell裡執行.
在子shell裡的變數不能被這段子shell程式碼塊之外外面的指令碼訪問.這些變數是不能被產生這個子shell的父程式存取的,實際上它們是區域性變數 .
例子:子shell中的變數作用域
shell指令碼也能啟動他自已的子程式. 這些子shell(即子程式)使指令碼並行地,有效率地地同時執行多個子任務.
一般來說,指令碼里的一個外部命令(external command)能生成(forks)出一個子程式,然而Bash內建(builtin)的命令卻不這樣做,因此,內建命令比起外部的等價命令執行起來更快.
圓括號裡的命令列表
( 命令1; 命令2; 命令3; ... )
嵌在圓括號裡的一列命令在一個子shell裡執行.
在子shell裡的變數不能被這段子shell程式碼塊之外外面的指令碼訪問.這些變數是不能被產生這個子shell的父程式存取的,實際上它們是區域性變數 .
例子:子shell中的變數作用域
#!/bin/bash
# subshell.sh
echo
echo "Subshell level OUTSIDE subshell = $BASH_SUBSHELL"
# Bash, 版本 3, 增加了新的 $BASH_SUBSHELL 變數.
echo
outer_variable=Outer
(
echo "Subshell level INSIDE subshell = $BASH_SUBSHELL"
inner_variable=Inner
echo "From subshell, \"inner_variable\" = $inner_variable"
echo "From subshell, \"outer\" = $outer_variable"
)
echo
echo "Subshell level OUTSIDE subshell = $BASH_SUBSHELL"
echo
if [ -z "$inner_variable" ]
then
echo "inner_variable undefined in main body of shell"
else
echo "inner_variable defined in main body of shell"
fi
echo "From main body of shell, \"inner_variable\" = $inner_variable"
# $inner_variable 會以沒有初始化的變數來列印
echo
exit 0
相關文章
- Shell程式設計-11-子Shell和Shell巢狀程式設計巢狀
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- Linux Shell程式設計(5)——shell特殊字元(下)Linux程式設計字元
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- Shell程式設計 --- Shell介紹程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- linux下的SHELL程式設計Linux程式設計
- shell程式設計程式設計
- Shell程式設計-shell變數1程式設計變數
- Bourne Shell及shell程式設計(轉)程式設計
- Shell程式設計-02-Shell變數程式設計變數
- Linux Shell程式設計(28)——程式替換Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux Shell程式設計(15)——操作字串Linux程式設計字串
- Linux Shell程式設計(16)——迴圈Linux程式設計
- Linux Shell程式設計(29)——函式Linux程式設計函式
- Linux Shell程式設計(30)——別名Linux程式設計
- Linux Shell 程式設計實戰技巧Linux程式設計
- Linux的shell程式設計(一)(轉)Linux程式設計
- Linux的shell程式設計(二)(轉)Linux程式設計
- Linux的shell程式設計(三)(轉)Linux程式設計
- Linux的shell程式設計(四)(轉)Linux程式設計
- Linux入門---(三)Shell程式設計Linux程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- Windows Shell 程式設計Windows程式設計
- shell程式設計(轉)程式設計
- shell程式設計二程式設計
- shell程式設計五程式設計
- Linux Bash Shell學習(七):shell程式設計基礎——執行Shell指令碼、functionLinux程式設計指令碼Function
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計