2013-07-16 127 views
0

我無法訪問例如來自其他C shell腳本KornShell(KSH)腳本聲明的變量在KSH腳本CSH腳本聲明的變量,無法訪問使用shell腳本

vi script.ksh 
set MyUser=root 
set MyPassword=shroot 
exit 

vi script.csh 
. /script1.ksh 
echo $MyUser 
echo $MyPassword 
exit 

這裏涉及的問題它無法從script2.csh中的script1 .ksh訪問變量MyUser和MyPassword。

您能否在這種情況下建議?

+1

您不能在一個shell中「源」腳本,並讓它使用另一個shell的語法執行cmds。你的例子是2個shell的語法之間的混淆。 'envFile'是'csh'中最好的選擇。和一些問題在ksh中''。 envFile.ksh',你不能在'ksh'中使用csh'set var = value'(注意空格)。祝你好運。 – shellter

回答

0

ksh腳本沒有按照您的想法使用ksh;它首先將$1設置爲MyUser=root,然後MyPassword=shroot

但是,當您從C shell腳本獲取源代碼時,因爲語法與C shell兼容(使用tcsh進行檢查),您可以設置兩個變量。如果您從Bourne-shell衍生產品中獲取腳本,ksh腳本末尾的exit會導致shell退出;它似乎不會導致C shell到exit

所以,你得到的是一個奇怪的混合動力。通常情況下,你堅持使用一種語言並專門使用它。在需要使用其他shell的地方,可以這樣做,但只需運行爲其他shell編寫的腳本。您可以使用環境變量與其他腳本進行通信。您通常不會嘗試編寫可由C shell和Bourne-shell衍生產品使用的可源代碼;有太多的語法是不同的。