2013-06-19 237 views
0

我有一個perl腳本,它需要來自shell腳本的值。如何從perl腳本中的shell腳本返回值

以下是shell腳本(a.sh):

#!/bin/bash 
return_value(){ 
$value =$(///some unix command) 
return $value 
} 

以下是perl腳本: ///

my $answer= `sh a.sh`; 
print("the answer is $answer"); 

但它不工作。請幫我

回答

3
#!/bin/bash 
return_value(){ 
    value=$(///some unix command) 
    echo "$value" 
} 

return_value 
  1. 你不能在一個shell變量賦值各地=任何空格。
  2. 請勿將$放在作爲分配目標的變量名稱之前。
  3. Perl的反引號捕捉命令的標準輸出,所以你必須回顯該值(return設置函數的退出狀態,它不會產生輸出)。
  4. 您必須執行該功能。
  5. 如果包含空格或文件名通配符,則應將$value放在引號中。
+0

謝謝@Barmar !!這工作完美! – user2475677

3

只要寫

echo $value 
在你的bash代碼

和輸出將顯示爲Perl代碼的反引號的結果。

1

backqoutes替代stdout,而不是返回值(它只是一個整數)。如果您使用

echo $value 

而不是return $value它會按照您的預期工作。更簡單的仍然是

some unix command 

作爲您的bash腳本中的單行。

相關問題