2013-05-08 23 views
28

Dấu hiệu phần trăm có nghĩa gì trong bash khi thao tác chuỗi? Ví dụ: ${0%/*} có nghĩa là gì?Bash: thao tác bằng các chuỗi (ký hiệu phần trăm)

+11

Bạn có thể kiểm tra trong http://tldp.org/LDP/abs/html/refcards.html#AEN22664 – fedorqui

+1

Liên kết mới tới tài liệu "Hoạt động chuỗi": http://tldp.org/LDP/abs/html /refcards.html#AEN22828 –

Trả lời

27

Nếu bạn sử dụng tài nguyên @ fedorqui, bạn sẽ thấy nó sắp xếp kết quả ngắn nhất là /* từ cuối đối số vị trí đầu tiên. Ví dụ:

example_foo(){ 
    echo ${1%/*} 
} 

example_foo path/to/directory/sub_directory 
# => path/to/directory 

Trong ví dụ tôi đã sử dụng đối số vị trí thứ hai kể từ lần đầu tiên là tên hàm.

+1

Thực hiện tốt việc ghép tất cả lại với nhau và đưa ra một ví dụ điển hình. – fedorqui

+2

Để giải quyết câu hỏi ban đầu, '$ 0' là tên đường dẫn đầy đủ của tập lệnh đang được thực thi; biểu thức đã cho tách thành phần cuối cùng của đường dẫn, vì vậy nó tương đương với 'dirname $ 0'. – chepner

+0

Như tôi đã hiểu, '1' trong ví dụ cho biết đoạn thứ hai của lệnh, đếm từ 0. –

Các vấn đề liên quan