2012-05-13 31 views
46

Ví dụ:Bash: Lấy đối số dòng lệnh đầu tiên và vượt qua phần còn lại

check_prog hostname.com /bin/check_awesome -c 10 -w 13

check_remote -H $HOSTNAME -C "$ARGS" 
#To be expanded as 
check_remote -H hostname.com -C "/bin/check_awesome -c 10 -w 13" 

Tôi hy vọng làm cho tinh thần trên, Những lập luận sẽ thay đổi như tôi sẽ sử dụng này trong khoảng 20+ lệnh. Một phương pháp kỳ quặc của việc gói một chương trình, nhưng nó hoạt động xung quanh Một vài vấn đề với một vài hệ thống mà chúng ta đang sử dụng ở đây (Gotta yêu mã 70)

Ở trên có thể được viết bằng perl hoặc python, nhưng Bash sẽ là phương pháp ưa thích

Trả lời

59

Bạn có thể sử dụng shift

sự thay đổi là một BUILTIN vỏ mà hoạt động trên các thông số vị trí. Mỗi khi bạn gọi thay đổi, nó "thay đổi" tất cả các tham số vị trí xuống một. $ 2 trở thành $ 1, $ 3 trở thành $ 2, $ 4 trở thành $ 3, và như vậy trên

+7

Tuyệt vời! Hoạt động như một nét duyên dáng 'echo $ 1 shift echo $ * ' là ví dụ về cách sử dụng thay đổi cho những người trong tương lai tìm kiếm điều này, chạy nó như './script.sh cmd1 cmd2 cmd3 cmd4' và nó sẽ đặt $ 1 thành cmd1 và phần còn lại sẽ là cmd2 cmd3 cmd4 như tôi muốn – user554005

+2

Và '$ #' bị giảm 1 trừ khi nó đã là 0. Bạn cũng có thể cho 'shift' một đối số dạng số để thay đổi theo nhiều vị trí. –

+7

@ user554005: Bạn hầu như luôn luôn sử dụng 'echo '$ @" 'thay vì' echo $ * 'hoặc' echo "$ *" 'kể từ biểu mẫu chưa được trích dẫn và" $ * 'form" được trích dẫn " thường không muốn. –

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