2013-10-14 72 views
2

我知道,調試腳本,我可以在第一行發出命令調試的bash /的ksh腳本和標

set -x 

。問題是,當腳本啓動一些其他腳本時,它們不會繼承此設置。所以我的問題是,是否有可能爲全局shell和所有子shell或某些腳本及其啓動的所有腳本設置此標誌?

+0

裏面有一個理由,一個子shell? – devnull

+1

+1你肯定沒有辦法阻止內部腳本顯式地關閉該選項,但除了用'bash - $ - '調用每個腳本之外,我沒有看到另一種方式。好奇地等待答案。 – kojiro

回答

0

這取決於,你打電話叫你的子shell使用-x也

+0

我不想修改腳本的每個調用,因爲主腳本可以調用某些下標,下標也調用某些腳本,因此修改每個調用都是不現實的。 – Trismegistos

0

set -x shell腳本

$ cat shell1.sh 
echo "Shell1" 

$ cat shell2.sh 
#!/bin/bash 
set -x 
./shell1.sh 
echo "shell2.sh" 

$ ./shell2.sh 
+ ./shell1.sh 
Shell1 
+ echo shell2.sh 
shell2.sh 
+0

正如您所見,shell2.sh中的每條命令都會輸出到屏幕,但shell1.sh中的命令不會輸出到屏幕,因爲-x標誌不會被shell1.sh腳本繼承。我想實現的是shell1.sh也向屏幕輸出命令。我想在不修改shell1.sh腳本的情況下實現這一點。請記住,practive中的shell1.sh也會調用其他一些腳本,我希望它們也繼承-x標誌。 – Trismegistos

+0

啊,這很棘手,但不修改shell1.sh。讓我們等待其他人發佈他們的答案 – Sathy