web-dev-qa-db-fra.com

Impossible de "cd" ou de changer de répertoire à l'aide du script bash dans WSL

J'ai installé buntu bash sur ma machine Windows, je peux donc tester les scripts Linux en dehors du travail. J'ai créé un script très simple avec "hello world" de base et un répertoire de modifications (cd), mais lors de son exécution, il affiche hello world. Il fait une erreur sur le cd à la ligne de répertoire.

Voici l'erreur:

$ ./test.sh
hello world
zipping away
./test.sh: line 6: cd: $'/home/fjaffer/temp\r\r': No such file or directory
./test.sh: line 7: $'\r': command not found
ffr@DP-PC:~$

Mon script test.sh est ci-dessous:

#!/bin/bash
echo "hello world"
echo "zipping away"
dir=/home/fjaffer/temp
cd $dir

S'il vous plaît donnez votre avis? Je vous remercie.

12
Femina Jaffer

C'est parce que vous avez créé votre script sur une machine Windows, que \r (retour à la ligne) a été ajouté à la fin de chaque ligne.

Supprimez-les comme ceci:

tr -d '\r' < test.sh > new-test.sh

Indiquez également la valeur de la variable:

cd "$dir"

puis lancez votre script:

./new-test.sh

Comme indice, il est également préférable d'utiliser:

 cd ... || exit

en cas d'échec.


Configurez votre éditeur pour qu’il utilise le format Linux pour enregistrer les fichiers (s’il en est capable) ou utilisez un éditeur bash comme nanoname__:

enter image description here

17
Ravexina

Une autre option consiste à utiliser la commande dos2unix pour convertir le fichier au format de type Unix.

Usage:

dos2unix your_file
11
αғsнιη