2011-03-26 79 views
-4

有一個殼牌程序。外殼程序:殼牌出口不起作用

  1. 包含一個命令(這是另一個shell程序),它運行並打印三個值。
  2. 然後輸出這三個值。
  3. 最後一個Perl文件被執行(這使用導出的值)。

所有這一切都發生在一個shell文件。

我的問題是出口並不在Perl的文件發生。可能是什麼問題呢?

+1

你必須給我們更多的去做。至少可以發佈shell腳本嗎?可能也是perl腳本呢? – psmears 2011-03-26 14:51:44

+0

此qwuestion值得儘可能最短的答案:任何事情。說真的,你認爲我們是魔術師嗎?順便說一句,我們中的一些人確實可以告訴你,你的概念很可能不起作用。 – Ingo 2011-03-26 14:52:41

+0

我們可以通過腳本來說明問題嗎?你甚至不會說這是哪個殼。 – IanNorton 2011-03-30 19:16:03

回答

0

正如評論指出這是一個有點難以用這一數額的信息來診斷,但你不會有,如果你做的Perl腳本從標準輸入,而不是從環境中讀取的值以出口任何東西。那麼你的「shell程序」只是

command_from_step_1 | perl_script_from_step_3 

與中間的管道字符。

2

你真的不給我們太多去,但下面的腳本符合標準的問題。它產生答案6.(1)中的命令是echo,它打印三個值。 (2)中的命令顯然是export行。 (3)中的命令是perl命令,該命令將環境變量a,b和c中的值加上一個換行符。

set -- $(echo a=1 b=2 c=3) 
export $1 $2 $3 
perl -e 'print $ENV{a} + $ENV{b} + $ENV{c}, "\n"' 

有很多可能的變化,我不認爲這是解決您的問題的好辦法。但它符合規定的標準。不過,你會做得更好,以表明你自己試圖解決問題,並尋求幫助來改進它。

而且,如果運行腳本,你會看到,export確實工作。如果它不在你的腳本中工作,這意味着你在濫用它。但是,由於您沒有向我們展示您的代碼,因此我們無法幫助您解決代碼中的問題。這是一個可憐的工匠,他自己的缺點歸咎於他的工具。這是一個泰羅的標誌,聲稱每天有數百萬人成功使用的東西「不起作用」。你有一個很小的機會,你已經找到了一個破解的方式 - 但機會是微乎其微的,必須詳細說明。

+0

使用我的水晶球,我懷疑rathika的錯誤是認爲在$ perl腳本中可以使用$ a而不是$ ENV {a}。 – 2011-03-27 12:56:15

0

嘗試運行該腳本與外殼的「-x」選項,看看發生了什麼。