我遇到了一個問題,我的echo參數列表太長,想要解決一些問題,或者至少測試一下這個問題,以便我可以正確處理它,它不會殺死我的腳本Echo:參數列表太長
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
所以問題是,當我回聲ARG列表太長,$FIELDS
設置爲null,因此我對$FIELDS -gt 1024
測試始終是真實的,不被抓。 問題是,當它進入數組顯然太大,我得到一個下標超出範圍錯誤,我的腳本退出。
任何想法,不勝感激。
編輯9/18
OK,所以這個問題是一個小更基本。
myserver-v1> echo $variable
myserver-v1> /usr/bin/echo: too many args
我想在我的腳本來測試這種
我嘗試以下,這工作,但我得到這一切廢話到標準輸出,填補了我的調試日誌,是惱人的
echo $variable
if [[ $? -ne 0 ]]; then
write to error log
fi
有沒有辦法測試echo $ variable ....而不發送到標準輸出? 我嘗試了以下,但似乎都沒有工作,所以我在這裏有點不知所措。
[[ ! `echo $variable ]]
[[ `echo $variable ]]
爲什麼不在設置之後使用'$ {#myarray [*]}'獲取數組的長度(看起來像字段數)?(對不起,我不熟悉ksh比bash) –
'$(#myarry [*]}'在ksh93中工作(99%linux系統上的std(實際上並不是pdksh)如果'echo $ {。 sh.version}'return anything,then you have a ksh93。祝你好運 – shellter
@evilotto我不能使用'$ {#myarray [*]}'因爲那樣會需要數組已經存在....問題是我無法創建超過1024個元素/字段的數組...因此,我必須能夠在運行'set -A數組'' – nitrobass24