3
比方說,我們有這樣的一個波紋管bash腳本:如何分離由bash文件生成的每個命令的輸出?
echo test
ls -alh
pwd
echo test2
所以文件可以有任意數量每生產或沒有自己的輸出就可以了命令。
接着上面的文件運行這樣/bin/bash -xe test.sh
這將產生以下輸出:
+ echo test
test
+ ls -alh
total 32
drwx------+ 6 daniels staff 204B Apr 3 23:33 .
drwxr-xr-x+ 64 daniels staff 2.1K Apr 4 01:53 ..
[email protected] 1 daniels staff 6.0K Apr 3 23:33 .DS_Store
drwxr-xr-x 5 daniels staff 170B Mar 15 17:03 Todo
[email protected] 1 daniels staff 282B Apr 3 20:39 test.py
[email protected] 1 daniels staff 97B Apr 4 01:52 test.sh
+ pwd
/Users/daniels/Desktop
+ echo test2
test2
有什麼辦法來解析生成的輸出可靠,並找出如何根據每個命令的輸出分開?
對於上面的例子,我們應該能夠分離和提取一個基帶:
+ echo test
test
另一個與
+ ls -alh
total 32
drwx------+ 6 daniels staff 204B Apr 3 23:33 .
drwxr-xr-x+ 64 daniels staff 2.1K Apr 4 01:53 ..
[email protected] 1 daniels staff 6.0K Apr 3 23:33 .DS_Store
drwxr-xr-x 5 daniels staff 170B Mar 15 17:03 Todo
[email protected] 1 daniels staff 282B Apr 3 20:39 test.py
[email protected] 1 daniels staff 97B Apr 4 01:52 test.sh
等
我想解析所述輸出的並看看該行是否以+
開頭,然後將其作爲一個命令的開始,但是您可以很容易地得到類似echo + ok
的東西,其中wi會使這個邏輯失敗。
另一種選擇會一直,如果我們可以修改由/bin/bash -x
使代替+輸出到輸出像https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text不過貌似+
被硬編碼在bash,而不是配置的字符。
任何想法?
嗯,我發現這個http://stackoverflow.com/questions/12048296/how-to-have-customize-log-format-for-set-x-in-bash-shell-script,並感到困惑。使用'PS4 ='測試並且完美地工作。謝謝。 – daniels