Édition:
J'essaye de créer une fonction simple qui imprime un nom, puis crée un répertoire. Je suis nouveau dans la création de fonctions dans bash, donc j'ai le script ci-dessous qui n'a pas fonctionné:
dest_path=/home/all/todo line="name" mkdir_for_name() { echo $1 mkdir $2 } mkdir_for_name $name mkdir_for_name $dest_path/$name
Quel est le problème avec cette syntaxe?
p>
3 Réponses :
Votre fonction utilise $ 2
, mais vous ne l'appelez qu'avec un seul argument, donc $ 2
est vide.
Puisque vous utilisez echo
, je crois que vous voulez imprimer le nom du répertoire; et bien sûr, vous devez passer 2 arguments à votre fonction. Peut être appeler votre fonction de la manière suivante. De cette façon, vous n'avez pas besoin de changer votre code.
dest_path=/home/all/todo line="name" mkdir_for_name() { echo "$1" mkdir "$2" } mkdir_for_name "$name" "$dest_path/$name"
Script complet:
mkdir_for_name "$name" "$dest_path/$name"
J'essaye d'abord de faire écho au $ name, puis j'aimerais créer un répertoire ...
@Bella, bien sûr que ça fait la même chose.
Vous avez défini une fonction qui accepte 2 arguments, où le premier argument passé est le nom à imprimer à l'écran (la ligne "echo"), tandis que le second argument passé créera le dossier souhaité. Passer un seul argument affichera simplement cet argument à l'écran
Quel est le répertoire que vous souhaitez créer?