GNU/Linux >> Belajar Linux >  >> Ubuntu

Menetapkan Hanya Bagian Dari String Ke Variabel Di Bash?

Saya menerima dari pengguna jalur file absolut tertentu, dan saya ingin membuat variabel yang akan menjadi string yang tidak hanya menyertakan PERTAMA dua komponen jalur file, tetapi tanpa mencetaknya atau apa pun.

Misalnya, jalur absolut dapat berupa:

/home/myusername/folder1/folder2/folder3

Dan itu disimpan di "target_path", dan saya ingin "mydir" menjadi hanya:

/folder1/folder2/folder3

Saya mencoba menggunakan perintah cut dengan cara yang berbeda tetapi tidak berhasil.

Jawaban yang Diterima:

Menggunakan manipulasi string bash:

$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3

Jadi, string yang Anda inginkan adalah (menambahkan kembali garis miring):

b="/${a#/*/*/}"

Untuk variabel a , ${a#foo} akan menghapus pencocokan string terpendek foo dari mulai dari a . Jadi, kami menghapus string terpendek yang berisi tiga / (termasuk garis miring di jalur), untuk menghapus dua komponen pertama dari jalur absolut.


Ubuntu
  1. Nama Variabel Bash Dinamis (variabel)?

  2. Tampilan Lengkap Di Mana Variabel Path Diatur Di Bash?

  3. Menggunakan Referensi Ke Variabel Bash String Di Sed?

  1. Cara Memisahkan String dalam Skrip Bash

  2. Mengulangi elemen variabel jalur di Bash

  3. Konversikan string teks dalam bash ke array

  1. Skrip bash(I)

  2. Bagaimana Mengizinkan Hanya Karakter Tertentu Dalam Variabel Bash?

  3. Tambahkan skrip bash ke jalur