Je veux mettre TextA au début de TextB en
cat TextA A TextB
Le problème est que je ne sais pas comment faire référence aux premier et second parameters, à savoir TextA et TextB dans le script suivant appelé A:
#!/bin/bash cat TextA > m1 cat TextB > m2 cat m1 m2 > TextB
où m1 et m2 sont des fichiers temporaires.
Comment pouvez-vous vous référer aux deux fichiers du script shell?
Vous pouvez utiliser $0
, $1
, $2
etc. pour faire référence aux variables du script.
$0
est le nom du script lui-même
$1
est le premier paramètre
$2
est le deuxième paramètre
etc
Par exemple, si vous avez cette commande:
a A1 A2
Alors à l’intérieur de vous aurez:
$0 = a $1 = A1 $2 = A2
Dans un script bash, le premier paramètre est $ 1, le second est $ 2 et ainsi de suite.
Si vous souhaitez une valeur par défaut, par exemple le troisième paramètre, vous pouvez utiliser:
var=${3:-"default"}
vous pouvez simplement utiliser append (>>)
cat TextB >> TextA
Le résultat est que TextA précède le texte TextB dans TextA
Je ferais ce qui suit:
#!/bin/bash if [ $# -ne 2 ] then echo "Prepend file with copyright notice" echo "Usage: `basename $0` " exit 1 fi copyright=$1 mainfile=$2 cat $mainfile > /tmp/m.$$ cat $copyright /tmp/m.$$ > $mainfile #cleanup temporary files rm /tmp/m.$$ /tmp/m2.$$
Je suis surpris que personne ne suggère le résultat suivant
cat TextA TextB | tee > TextB
De cette façon, vous pouvez éviter de créer un fichier temporaire.
On dirait que vous pouvez juste faire ce qui suit:
TextA="text a" TextB="text b" echo "$TextA $TextB" > file1
Ou utilisez l’opérateur append (>>).