2012-02-26 81 views
1

我有點用Perl一個小白的,不能看什麼不對的腳本:獲得一個Perl命令輸出到變量殼

#!/bin/sh 
randAnPass=true; 
if [ $randAnPass = true ] 
then 
pass=perl /root/bin/randpass 
else 
# prompt for setting user's password .. 
echo -n "pick password for '${user}': " 
read pass 
fi 
#echo $randAnPass; 
echo "Generated pass = $pass"; 

出於某種原因,輸出:

r4Nd0mP 
Generated pass = 

我希望它輸出

Generated pass = r4Nd0mP 
+1

使用反引號捕獲命令的輸出,你」只是運行命令。 – 2012-02-26 01:30:53

+1

@Dave:反引號? '$()'好得多。 – 2012-02-26 01:32:11

+0

我不明白它有多好,但肯定的是,它也可以。 – 2012-02-26 01:32:56

回答

4
pass=`perl /root/bin/randpass` 
4

如果你想只是捕捉STDOUT perl的命令使用,

pass=$(perl /root/bin/randpass) 

但是,如果你需要同時捕獲STDERR和STDOUT

pass=$(perl /root/bin/randpass 2>&1) 
+0

你的意思是STDERR? – TLP 2012-02-26 09:12:20

+0

是的,謝謝@TLP – 2012-02-26 09:49:26