Làm thế nào để chỉ in tên tập lệnh?


9
[username@notebook ~]$ cat foo.sh 
#!/bin/bash

echo "$0"
[username@notebook ~]$ ./foo.sh
./foo.sh
[username@notebook ~]$ 

Câu hỏi : Làm thế nào tôi có thể xuất "foo.sh"? Không có vấn đề làm thế nào nó được thực hiện.

Câu trả lời:


22

Sử dụng basename:

#!/bin/bash

basename -- "$0"

Nếu bạn muốn gán nó cho một biến, bạn sẽ làm:

my_name=$(basename -- "$0")

6
Điều này sẽ thất bại nếu tên tập lệnh bắt đầu bằng dấu gạch ngang -, bạn cần basename -- "$0". Sử dụng mở rộng tham số shell để tránh điều đó và không buộc bạn phải khởi chạy lệnh bên ngoài.
cuonglm

3
@cuonglm, không chắc tên tập lệnh sẽ bắt đầu bằng dấu gạch ngang, nhưng đó là một điểm hợp lệ.
cjm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.