2016-06-23 6 views
0

私のスクリプトは本当に奇妙な出力を生成していますが、その理由はわかりません。 (userslist.tempは、ユーザ名のリストで、ファイルの各行に1つずつ)スクリプトの出力変数の展開

printf 'Output Starting:\n\n' 
while read line; do 
    cronresult=$(sudo crontab -u $line -l) 
    printf "$line : $cronresult" 
done < userslist.temp 

それが生成する出力:

Output Starting: 

no crontab for thornegarvin 
thornegarvin : 
no crontab for testuserone 
testuserone : 
no crontab for testusertwo 
testusertwo : 
no crontab for testuserthree 
testuserthree : 

私のユーザーはしていない。ここ

はスクリプトですcrontabが設定されていますが、なぜスクリプトが変数を別の行に表示しないのかわかりません。

+1

stderrを '2/dev/null'で破棄したらどうなりますか? – choroba

+1

あなたの質問は正確に何ですか? crontabが設定されていないと、私はあなたが見たいものを理解していませんか? – dan08

+1

'$(..)'はstdoutをキャプチャしますが、このようなエラーメッセージは標準エラー出力に直接書き込まれます。変数にもエラーを保存したい場合は、 'cronresult = $(sudo crontab -u" $ line "-l 2>&1)'を使うことができます –

答えて

0

コメントは私の問題を解決するのに十分であった: 私がキャプチャしていた出力は、私が考えていた標準出力ではなく標準出力であった。 stderrを/ dev/nullにリダイレクトし、空のstd出力を処理するifを設定しました。ありがとう!

関連する問題