GNU/Linux >> Tutoriels Linux >  >> Linux

Répertoire de changement de script shell avec variable

Votre variable contient un retour chariot. Essayez de dire :

cd $(echo $RED_INSTANCE_NAME | tr -d '\r')

et ça devrait marcher. Pour supprimer le CR de la variable, vous pouvez dire :

RED_INSTANCE_NAME=$(echo $RED_INSTANCE_NAME | tr -d '\r')

Voici une illustration du problème :

$ mkdir abc
$ foo=abc$'\r'
$ echo "${foo}"
abc
$ cd "${foo}"
: No such file or directory
$ echo $foo | od -x
0000000 6261 0d63 000a
0000005
$ echo $foo | tr -d '\r' | od -x
0000000 6261 0a63
0000004
$ echo $'\r' | od -x
0000000 0a0d
0000002

Une façon de rencontrer votre problème décrit est d'avoir un tilde (~ ) dans le nom de la variable. Utilisez le chemin absolu ou $HOME variables à la place. Notez que l'utilisation de $HOME nécessitera des guillemets doubles.

# doesn't work
$ vartilde='~/'
$ cd $vartilde
-bash: cd: ~: No such file or directory

# works
$ varfullpath='/Users/recurvirostridae'
$ cd $varfullpath

# works
$ varwithhome="$HOME"
$ cd $varwithhome

Essayez

cd "$RED_INSTANCE_NAME"

Assurez-vous également que le chemin a un sens pour le répertoire actuel où cd commande est exécutée.


Linux
  1. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

  2. D'où est exécuté un script Shell ?

  3. Comment stocker une commande dans une variable dans un script shell ?

  4. Répertoire courant du script shell ?

  5. Copier et écraser un fichier dans un script shell

Commande cd sous Linux (changer de répertoire)

Shell Scripting Partie I :Premiers pas avec les scripts bash

Comment stocker une commande Linux en tant que variable dans un script shell

Où est la variable PATH définie dans Ubuntu ?

Itérer sur la variable $ PATH à l'aide d'un script shell

Vérifier le mot de passe de l'utilisateur avec un script shell