【linux腳本】讀取命令序列輸出&&子shell&&父shell

讀取命令序列輸出&&shell&&shell

將多個命令或工具結合起來一起輸出。一個命令的輸出可以當做另一個命令的輸入,而這個命令的輸出又可以作爲另一個的輸入。

這幾個命令通常用通道(pipe)來鏈接,“|”。例如:

$cmd1 | cmd2 | cmd3

三個命令組合。cmd1將輸出傳給cmd2cmd2的輸出又傳給了cmd3

例子:
$ ls | cat -n > out.txt 

ls的輸出傳給了cat -n ,cat -n 又將輸出通過stdinc重定向寫入out.txt中。

我們可以用字shell的方式來讀取序列的輸出:
cmd_output=$(COMMANDS)

例如:

cmd_output=$(ls | cat -n)

echo $cmd_output

命令會打印ls | cat -n 的結果。

我們還可以將$()換成``(反引用號與~符號在一塊)

cmd_output=`ls | cat -n`

echo cme_output

我們在這裏要補充一個概念————子shell和父shell 

簡單的理解:
我們打開一個終端,其實這就是一個父shell,當我們執行某個腳本xxx.sh時,執行xxx.sh腳本的時候其實系統就爲我們打開了一個子shell。一旦子shell執行完成後,返回父shell。子shell的執行並不會對父shell有什麼影響。

   

注意:

1.我們可以父shell中開啓一個子shell,方法很簡單:

pwd;

(cd /bin ;ls)

pwd;

兩次pwd返回的結果最終顯示是一樣的。

2.

我們可以使用子shell或反引用的形式將命令讀入變量中,但這裏有一個問題我們需要注意。

$cat text.txt

1

2

3 f    f   f

$ out=$(cat text.txt)

$echo $out

1 2 3 f f f#我們注意到系統默認將\n和空格給省略了

$echo “$out”

1

2

3 f    f   f

這樣我們就可以保留原格式來輸出了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章