La commande set utilisée sans option mais suivie d'arguments affecte ces derniers aux paramètres positionnels $1, $2, $3 ....., $*, $@ et $#.
Cela permet de manipuler plus facilement le résultat de diverses substitutions.
Exemple :
$ ls
fichier_0 fichier_2 fichier_4 fichier_6 fichier_8
fichier_1 fichier_3 fichier_5 fichier_7 fichier_9
$ set `ls`
$
La liste des fichiers obtenue avec la commande ls est maintenant affecté aux paramètres positionnels.
$ echo $#
10
$ echo $*
fichier_0 fichier_1 fichier_2 fichier_3 fichier_4 fichier_5 fichier_6 fichier_7 fichier_8 fichier_9
$ echo $1
fichier_0
$ echo $3
fichier_2
$ echo $9
fichier_8
$ echo ${10}
fichier_9
$