Mais cela semble fonctionner au cas par cas dans la version 4.1.2, existe-t-il un moyen de le faire mot par mot?
Alexej Magura
@AlexejMagura Je ne comprends pas ce que tu veux dire. Cela agit sur les éléments du tableau. Si vous avez des éléments à un caractère, cela fonctionnera "sur les personnages". Si chaque élément est un mot, cela fonctionne sur les mots. Essayez-vous peut-être cela sur une chaîne et non sur un tableau?
terdon
Je suis en train de l'essayer sur une copie de "$ @", qui, je suppose, pourrait devenir une chaîne à ce stade, je ne suis pas sûr.
Alexej Magura
Sur bash 4.2.46, "${@:1:2}"me donne en fait les arguments de 1ère et 2ème ligne de commande . Pendant ce temps, "${@:1}"me donne les arguments de ligne de commande complets et "${@:0}"me donne le nom du script suivi des arguments de ligne de commande complets .
Rockallite
@Rockallite bien, oui. Les 2e et 3e éléments du $@ tableau sont les 1er et 2e arguments. "${@:1}"affichera le tableau entier en commençant par le 2ème élément (le 1er argument) et ${@:0}le tableau entier en partant du 1er élément qui est le nom du script. À quoi vous attendiez-vous?
"$@"
. Votreargv
affectation serait rompue si des arguments contenaient des espaces.Réponses:
Vous pouvez utiliser le même format que pour tout autre tableau. Pour extraire les 2e et 3e éléments de
$@
, vous feriez:la source
"${@:1:2}"
me donne en fait les arguments de 1ère et 2ème ligne de commande . Pendant ce temps,"${@:1}"
me donne les arguments de ligne de commande complets et"${@:0}"
me donne le nom du script suivi des arguments de ligne de commande complets .$@
tableau sont les 1er et 2e arguments."${@:1}"
affichera le tableau entier en commençant par le 2ème élément (le 1er argument) et${@:0}
le tableau entier en partant du 1er élément qui est le nom du script. À quoi vous attendiez-vous?