Cách xử lý hơn 10 tham số trong shell


101

Tôi đang sử dụng bash shell trên linux và muốn sử dụng hơn 10 tham số trong shell script


8
Lưu ý rằng có 10 tham số sẽ làm cho nó khá khó hiểu. Có lẽ sẽ tốt hơn nếu sử dụng các tùy chọn (ví dụ -a 1hoặc --foo=bar) thay thế. Xem man getopt, man getoptsman bashđối với một số tùy chọn để thực hiện điều đó.
Mikel

Câu trả lời:


158

Sử dụng dấu ngoặc nhọn để tắt chúng:

echo "${10}"

Bạn cũng có thể lặp lại các tham số vị trí như sau:

for arg

hoặc là

for arg in "$@"

hoặc là

while (( $# > 0 ))    # or [ $# -gt 0 ]
do
    echo "$1"
    shift
done

2
Lưu ý rằng $ {10} sẽ hoạt động trong bash, nhưng sẽ hạn chế khả năng di chuyển của bạn vì nhiều triển khai sh chỉ cho phép các thông số kỹ thuật một chữ số.
William Pursell

1
@William: Có một số shell sẽ không chấp nhận nó, chẳng hạn như shell Bourne kế thừa ban đầu, nhưng ngoài các shell mà tôi đã liệt kê trong một nhận xét khác (Bash, dash, ksh và zsh), nó cũng hoạt động trong csh, tcsh và Busybox tro.
Tạm dừng cho đến khi có thông báo mới.

1
@WilliamPursell ${10}được xác định bởi POSIX
Steven Penny

2
Lo lắng về ${10}việc làm việc chỉ cần thiết khi sử dụng các triển khai rất cũ không tuân thủ tiêu chuẩn. Có lẽ chỉ quan tâm đến lịch sử ... và tôi vẫn chưa bao giờ sử dụng nó! Tôi cho rằng vì phương pháp hay nhất quy định rằng 10 đối số là quá nhiều trừ khi chúng được lặp lại, trong trường hợp đó bạn sẽ lặp lại chúng "$@"thay vì liệt kê chúng.
William Pursell

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.