Katakanlah saya memiliki beberapa variabel dalam skrip shell (misalnya dalam zsh):
FOLDER_1, FOLDER_2, etc.
Variabel-variabel ini merujuk ke folder yang diturunkan /
. Misalnya, jika saya memiliki jalan/home/me/stuff/items
variabelnya adalah:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Sekarang, katakan bahwa saya ingin membangun kembali jalur yang sesuai dengan menggabungkan variabel. Salah satu cara yang mungkin adalah dengan membangun jalur sebagai berikut:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Namun, katakan bahwa beberapa variabel FOLDER_i
datang dengan garis miring ke depan, sementara yang lain tidak (dan kita tidak tahu yang mana) misalnya
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Pertanyaan saya adalah: Bagaimana saya bisa membangun jalan dengan kokoh? (mis. menghindari tebasan ganda, dan menambahkannya di tempat yang seharusnya).
Saya pikir salah satu cara untuk melakukan ini adalah dengan menambahkan /
selalu di antara pasangan variabel, dan kemudian menghapus duplikat dengan sed
, tetapi saya tidak bisa membuatnya bekerja (saya tidak yakin saya menangani /
dengan benar di sed
).
Juga, apakah saya menciptakan kembali kemudi ? (yaitu apakah sudah ada built-in yang melakukan ini?).
Pada akhirnya, jika variabel berada dalam array , misalnya FOLDERS
, apakah mungkin untuk melakukan ini tanpa perulangan? (Atau sebagai alternatif, dengan looping tetapi tanpa mengetahui berapa banyak yang FOLDERS
ada dalam array).
%
Metode tunggal bekerja untuk slash trailing tunggal yang disebutkan dalam queston. Untuk melayani ketika ada beberapa garis miring,${parts[@]%%/*}
bekerja. Berikut ini tautan untuk info lebih lanjut tentang masalah slash: Apa arti slash ganda dalam jalur UNIX? Apakah 'cd dir / subdir // valid ...