エコーの引数リストが長すぎるという問題が発生しているので、この問題を回避する方法、または少なくとも条件をテストして適切に処理できるようにする方法についていくつかのアイデアが必要です。脚本
for file in `cat filelist`; do
PROTOCOLS1=`egrep -i 'rsh|rsync|remsh' "$file" | egrep -v '^[ | ]*#'`
FIELDS=`echo $PROTOCOLS1|wc -l`
if [[ $FIELDS -gt 1024 ]]; then
echo $file >> $debuglog
else
set -A myarray $PROTOCOLS1
do stuff.....
fi
done
したがって、問題は、echoのargリストが長すぎる場合、$FIELDS
nullに設定されるため、のテストが$FIELDS -gt 1024
常にtrueになり、キャッチされないことです。問題は、配列に移動すると明らかに大きすぎて、添え字が範囲外のエラーになり、スクリプトが終了することです。
どんなアイデアでも大歓迎です。
9/18を編集
OK、問題はもう少し基本的です。
myserver-v1> echo $variable
myserver-v1> /usr/bin/echo: too many args
スクリプトでこれをテストしたい
私は次のことを試しましたが、これは機能しますが、このすべてのがらくたをstdoutに取得します。これにより、デバッグログがいっぱいになり、煩わしくなります。
echo $variable
if [[ $? -ne 0 ]]; then
write to error log
fi
stdoutに送信せずにecho$variableをテストする方法はありますか?以下を試してみましたが、どちらもうまくいかなかったので、ちょっと戸惑いました。
[[ ! `echo $variable ]]
[[ `echo $variable ]]