Je rencontre un problème où ma liste d'arguments pour l'écho est trop longue et j'aimerais avoir des idées sur la façon de contourner ce problème, ou du moins tester la condition pour pouvoir gérer correctement , et il ne sera pas tuer mon scriptEcho: Liste d'arguments trop longue
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
le problème est que lorsque ma liste de arg pour écho est trop long, $FIELDS
est définie sur null, et donc mon test pour $FIELDS -gt 1024
est toujours vrai et ne se faire prendre. Le problème est quand il va à la rangée c'est évidemment trop grand et j'obtiens un indice hors de l'erreur de gamme et mon manuscrit se termine.
Toutes les idées sont grandement appréciées.
Modifier 9/18
OK si le problème est un peu plus basique.
myserver-v1> echo $variable
myserver-v1> /usr/bin/echo: too many args
Je veux tester cela dans mon script
J'ai essayé ce qui suit, ce qui fonctionne, mais je reçois toute cette merde à stdout, qui remplit mon journal de débogage et est ennuyeux
echo $variable
if [[ $? -ne 0 ]]; then
write to error log
fi
Existe-t-il un moyen de tester la variable echo $ .... sans l'envoyer à stdout? J'ai essayé ce qui suit, mais ni l'un ni l'autre ne semblait fonctionner, alors je suis un peu perdu ici.
[[ ! `echo $variable ]]
[[ `echo $variable ]]
Pourquoi ne pas simplement utiliser $ {# myarray [*]} 'pour obtenir la longueur du tableau (qui ressemble au nombre de champs) après l'avoir défini?(désolé, je suis moins familier avec ksh que bash) –
'$ (# myarry [*]}' fonctionne dans ksh93 (le std sur les systèmes Linux à 99% (qui ne sont pas réellement pdksh) Si 'echo $ {. sh.version} 'renvoie n'importe quoi, alors vous avez un ksh93 Bonne chance à tous – shellter
@evilotto Je ne peux pas utiliser' $ {# myarray [*]} 'parce que cela nécessiterait que le tableau existe déjà .... le problème est je ne peux pas créer un tableau sur 1024 éléments/champs ... donc je dois pouvoir le tester avant de lancer 'set -A array' – nitrobass24