shell中賦值給變數會產生新程序

2021-07-25 13:09:09 字數 479 閱讀 6400

這個問題一般情況下是不會注意而且覺得有問題的。但是在抓取程序id的時候,可能出現問題。

比如今天想抓取乙個輸入命令的程序

指令碼名稱是greprss,測試程式是a.out

則使用的時候是greprss a.out

目的是抓取a.out的rss變化 以及獲取最大值

當我企圖使用

./a.out

pid=`ps aux | grep "a.out" | sort -r -n -k 2 | awk ''`

的時候,發現該結果和直接裸的呼叫

ps aux | grep "a.out" | sort -r -n -k 2 | awk ''

不一樣而且也和真實程序的pid值不同。且變數值大於實際值。

經測試 使用$()與反引號結果一樣,則判斷在使用此類方法賦值給變數的時候,反引號中的命令會當做乙個新的程序,並且抓取到給了變數pid。

所以判斷在使用此類方法的時候 會產生新的程序。

shell中的變數賦值

shell指令碼中通常要獲取某個值,供指令碼使用,這個值來自於其他的地方,今天我們來說一下,如何獲取和計算。雙引號 阻止shell對大多數特殊字元進行解釋,但 仍保持其特殊含義 echo 把其引數傳遞給標準輸出,也就是顯示器 echo your name is name 輸出name的值,在雙引號中...

shell程式設計之給變數賦值的五種方法

1 shell中的變數型別 shell中的變數可以分為環境變數 位置變數 預定義的特殊變數以及使用者自定義變數 2 環境變數 shell中的環境變數是一類shell預定義變數,是用於設定系統執行環境的變數,環境變數由系統統一命名。部分系統變數的值由系統設定,部分環境變數的值可以由使用者給定。環境變數...

shell 指令碼中將輸出內容賦值給乙個變數時不換行

如題,將某命令的輸出結果賦值給乙個變數 a 如果使用 echo a 輸出變數,則變數中的 換行都會被忽略掉,所有內容輸出到一行 而使用 echo a 可正常輸出變數中的換行 當我們要將命令的輸出儲存到乙個變數,再對每一行遍歷進行某些操作時不能使用 html view plain copy for i...