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 FOLDERStrong 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ệ ...