GNU/Linux >> Znalost Linux >  >> Linux

Shell skript změní adresář s proměnnou

Vaše proměnná obsahuje návrat vozíku. Zkuste říct:

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

a mělo by to fungovat. Chcete-li odstranit CR z proměnné, můžete říci:

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

Následující by ilustroval problém:

$ 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

Jedním ze způsobů, jak narazit na váš popsaný problém, je mít vlnovku (~ ) v názvu proměnné. Použijte absolutní cestu nebo $HOME místo toho proměnná. Všimněte si, že pomocí $HOME bude vyžadovat dvojité uvozovky.

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

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

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

Zkuste

cd "$RED_INSTANCE_NAME"

Také se ujistěte, že cesta dává smysl k aktuálnímu adresáři, kde je cd příkaz je proveden.


Linux
  1. Který Shell Interpreter spouští skript s No Shebang?

  2. Shell skript s funkcí a parametrem jako proměnnými?

  3. Změňte pracovní adresář v shellu pomocí python skriptu

  1. Aktuální adresář skriptu Shell?

  2. Kde je v Ubuntu nastavena proměnná PATH?

  3. Iterujte přes proměnnou $PATH pomocí skriptu shellu

  1. Zkontrolujte heslo uživatele pomocí shell skriptu

  2. Shell =Zkontrolujte, zda proměnná začíná #

  3. Šablony s Linuxem ve skriptu Shell?