2012-08-23 43 views
0

我正在編寫一個bash腳本,它啓動tcsh解釋器作爲登錄shell並使其執行my_command。 tcsh手冊頁說,有兩種方法可以啓動登錄shell。第一個是使用/bin/tcsh -l而沒有其他參數。不是一個選項,因爲我需要shell執行my_command。第二個是指定破折號(-)作爲零參數。如何指定zeroeth參數

現在用-l選項在bash命令exec不正是這一點,其實下面的工作完美:

#!/bin/bash 
exec -l /bin/tcsh -c my_command 

除...因爲我需要劇本回來我不能使用exec然後做一些其他的事情!那麼,如何在不使用exec的情況下指定-作爲的zeroeth參數?

回答

1

您可以編寫包含一個包裝(w.sh)腳本:

#!/bin/bash 
exec -l /bin/tcsh -c my_command 

,並在您主腳本執行w.sh。

+0

下達指令的文件擴展名是不是一個最好的做法 - 這應該只是'w',不'w.sh',或者您正在創建的頭痛,如果它曾經改寫爲C(允許setuid位例如,它不能在腳本中設置)。 –

2

您可以將exec命令放入腳本的子shell中。

#!/bin/bash 
(exec -l /bin/tcsh -c my_command) 
# ... whatever else you need to do after the command is done 
+0

很光滑,謝謝! – JCOidl