Passer des arguments partiels dans tcshell

J’écris un script shell (tcsh) censé recevoir 3 parameters ou plus. Les trois premiers doivent être transmis à un programme et les autres sont censés être transmis à un autre programme. Dans l’ensemble, le script devrait ressembler à:

./first_program $1 $2 $3 ./second program [fourth or more] 

Le problème est que je ne sais pas comment faire ce dernier – passer tous les parameters qui sont après le troisième.

Vous pouvez utiliser le shift comme suit:

 ./first_program $1 $2 $3 shift # shift 3 times to remove the first 3 parameters. shift shift ./second program $* 

$* contiendra les parameters restants.

Vous devez également effectuer une vérification des erreurs avant d’effectuer un shift en vérifiant $#argv et en vous assurant qu’il n’est pas nul. Sinon, vous pouvez vérifier la valeur de $#argv à l’écanvas du script et vous assurer qu’elle est au moins 3 .

Je vous présente la commande shift :

shift [variable]
Sans arguments, rejette argv[1] et déplace les membres de argv vers la gauche.

Exemple:

 $ cat /tmp/tcsh.sh #!/bin/tcsh echo "$1" "$2" "$3" shift shift shift echo "$*" $ /tmp/tcsh.sh 1 2 3 4 5 6 1 2 3 4 5 6