GNU/Linux >> Belajar Linux >  >> Linux

Direktori perubahan skrip Shell dengan variabel

Variabel Anda berisi carriage return. Coba ucapkan:

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

dan itu harus bekerja. Untuk menghapus CR dari variabel, Anda dapat mengatakan:

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

Berikut ini akan mengilustrasikan masalah tersebut:

$ 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

Salah satu cara untuk menghadapi masalah yang Anda jelaskan adalah dengan memiliki tilde (~ ) dalam nama variabel. Gunakan jalur absolut atau $HOME variabel sebagai gantinya. Perhatikan bahwa menggunakan $HOME akan membutuhkan kutipan ganda.

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

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

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

Coba

cd "$RED_INSTANCE_NAME"

Juga, pastikan jalur masuk akal ke direktori saat ini di mana cd perintah dijalankan.


Linux
  1. Penerjemah Shell mana yang Menjalankan Skrip Tanpa Shebang?

  2. Melewati Nama File Dengan Spasi Ke Skrip Shell?

  3. Dari Mana Skrip Shell Dijalankan?

  1. Ubah direktori kerja di shell dengan skrip python

  2. Cara mengubah kata dalam file dengan skrip shell linux

  3. Jalankan skrip shell di shell saat ini dengan izin sudo

  1. Ulangi variabel $PATH menggunakan skrip Shell

  2. Periksa kata sandi pengguna dengan skrip shell

  3. Shell =Periksa apakah variabel dimulai dengan #