2013-03-23 72 views
1

我有一個腳本caller.csh其中我打電話給另一個called.sh。我使用set命令在caller.csh(例如set alpha = 10)中聲明瞭一些變量。如何在called.sh(例如echo $alpha)中使用它們而不將它們作爲命令行參數傳遞?如何讓變量在另一個csh腳本調用的csh腳本中使用?

請注意,腳本called.sh可以獨立運行,變量也在其中定義。我希望這些變量值可以被caller.sh中的值覆蓋。所以我會在called.sh中使用像if not defined $alpha, then set alpha =這樣的東西。

回答

1

一種方法是將它們設置爲環境變量(使用setenv)。

但是,這不是一個好方法。將變量傳遞給shell腳本的接口應該通過命令行選項/參數。如果它是一個shell腳本,它應該是獨立的。如果直接從命令行運行它,還會如何傳遞相同的參數?

編輯:按照您的問題的第二部分更新。使用getopt。您可以將變量設置爲默認值,然後使用getopt覆蓋這些值,以防用戶將它們作爲命令行選項/參數傳遞。這種方法比任何一種全局定義的變量更可取。

+0

謝謝。 'C'中可以有全局變量嗎?請參閱我在問題中添加的註釋(第二段) – user13107 2013-03-23 16:42:48

+0

好的。看到編輯我的答案。 – shx2 2013-03-23 17:05:48