linux - /bin/bash -x是什么意思?
巴扎黑
巴扎黑 2017-04-17 13:39:14
0
3
1541

例如一个脚本dumb.sh的内容为

#! /bin/bash
idx=1
echo $idx

/bin/bash -x dumb.sh的结果为:

+idx=1
+echo 1
1

而且/bin/bash -x dumb.sh > trace.log后,trace.log内容仅为:

1

有什么办法将/bin/bash -x dumb.sh的整个结果保存下来么?

巴扎黑
巴扎黑

全部回覆(3)
伊谢尔伦

處理方法:

/bin/bash -x dump.sh > trace.log 2>&1

原因:
用strace追蹤

strace /bin/bash -x dump.sh

結果:

write(2, "+ idx=1\n", 8+ idx=1
)                = 8
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
write(2, "+ echo 1\n", 9+ echo 1
)               = 9
write(1, "1\n", 21
)                      = 2
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
read(255, "", 29)                       = 0
exit_group(0)                           = ?

可以看出+idx=1和+echo1是write(2,),這個是標準錯誤輸出,雖然打螢幕,但是>預設不會把這個內容寫入檔案。
如下這個指令可以把標準錯誤重新導向到1中

/bin/bash -x dump.sh > aa 2>&1
刘奇

在man bash手冊中章節:CONDITIONAL EXPRESSIONS,-x的意思是:

-x file
    True if file exists and is executable.

參數-x會列出shell執行語句的順序並列印。 +echo 1這種語句並不是腳本的輸出,所以不能儲存到檔案中。

黄舟

-x 偵錯模式

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板