我遇到了一个问题,我的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