Giả sử tôi có một số biến trong tập lệnh shell (ví dụ: trong zsh):
FOLDER_1, FOLDER_2, etc.
Các biến này đề cập đến các thư mục giảm dần từ /
. Ví dụ, nếu tôi có một đường dẫn/home/me/stuff/items
các biến sẽ là:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Bây giờ, nói rằng tôi muốn xây dựng lại đường dẫn tương ứng bằng cách nối các biến. Một cách có thể là xây dựng đường dẫn như sau:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Tuy nhiên, giả sử rằng một số biến FOLDER_i
đi kèm với dấu gạch chéo về phía trước, trong khi các biến khác không (và chúng tôi không biết cái nào), vd
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Câu hỏi của tôi là: Làm thế nào tôi có thể xây dựng con đường mạnh mẽ? (ví dụ: tránh các dấu gạch chéo kép và thêm chúng vào nơi cần thiết).
Tôi nghĩ một cách để làm điều này là thêm /
luôn luôn giữa các cặp biến và sau đó xóa bất kỳ bản sao nào sed
, nhưng tôi không thể làm cho nó hoạt động (tôi không chắc là mình đang xử lý /
chính xác sed
).
Ngoài ra, tôi đang phát minh lại bánh xe ? (tức là đã có sẵn trong đó chưa?).
Cuối cùng, nếu các biến nằm trong một mảng , ví dụ FOLDERS
, liệu có thể làm điều này mà không cần lặp không? (hoặc cách khác, bằng cách lặp nhưng không biết có bao nhiêu FOLDERS
trong mảng).
%
Phương thức duy nhất hoạt động cho dấu gạch chéo đơn được đề cập trong nhiệm vụ. Để phục vụ khi có nhiều dấu gạch chéo,${parts[@]%%/*}
công trình. Đây là một liên kết đến một chút thông tin về vấn đề gạch chéo: Dấu gạch chéo kép có ý nghĩa gì trong đường dẫn UNIX? Là 'cd dir / subir // hợp lệ ...