pour la boucle de gamme ne fonctionne pas ksh
J'ai essayé ce,
#!/bin/ksh
for i in {1..10}
do
echo "Welcome $i times"
done
en Ksh d'AIX boîte.
Je suis arriver à la sortie,
Bienvenue {1..10} fois
Quel est le problème ici?
N'est-il pas censé pour imprimer de 1 à 10?.
Edit:
Selon perkolator de la poste, à partir de Une itération à travers une gamme de services de renseignements en ksh?
Il ne fonctionne que sur linux. Est-il un autre contourner ou de remplacement pour unix boîte de ksh?
for i in 1 2 3 4 5 6 7 8 9 10
est laid.
Grâce.
OriginalL'auteur jsg25 | 2010-06-09
Vous devez vous connecter pour publier un commentaire.
Je crois de mémoire que la norme
ksh
sur AIX est une ancienne variante. Il peut ne pas supporter la distance, pour la boucle. Essayez de le faire fonctionner avecksh93
au lieu deksh
. Cela devrait être dans le même endroit queksh
, probablement/usr/bin
.Sinon, il suffit d'utiliser quelque chose de la vieille école comme:
En fait, en regardant à travers publib semble le confirmer (le
ksh93
extrait) donc je vais essayer d'aller dans cette voie.Que de la vieille école de chose fonctionne très bien!.
Depuis les anciennes versions de coquilles n'ont pas la fonction plage,
seq
est souvent utilisé:for i in $(seq 10)
oufor i in `seq 10`
(ou sur les systèmes BSD, vous pouvez utiliserjot
). @paxdiablo: si un obus a[[]]
il a très probablement$(())
et vous n'avez pas besoin d'utiliserexpr
.Upvoted pour le tout en boucle qui a résolu mon problème (bien que moins élégamment que je voudrais). Le ksh93 idée ne fonctionne pas sur mon ordinateur AIX.
OriginalL'auteur paxdiablo
La raison étant que la pré-93 ksh n'est pas réellement gamme de support.
Lorsque vous l'exécutez sur Linux vous aurez tendance à trouver que ksh est en fait un lien vers bash ou ksh93.
Essayer en boucle comme :-
Confirmant que le style C pour la boucle ne fonctionne pas.
ksh93, Bash et zsh tous comprendre C-comme pour la boucle de la syntaxe. Voir: stackoverflow.com/questions/1591109/...
OriginalL'auteur Decado
Il semble que la version de ksh vous avez n'est pas la portée de l'opérateur. J'ai vu cela sur plusieurs systèmes.
vous pouvez contourner ce problème avec une boucle while:
Sur mes systèmes en général, je utiliser perl ainsi, le script devrait ressembler
OriginalL'auteur gruntled
Vous pouvez vérifier et voir si iota œuvres voir la page de man ici ou si non, écrivez votre propre petit programme en C pour faire la même chose et appeler.
La syntaxe de iota est quelque chose comme
OriginalL'auteur Trevor North