Tôi có một kịch bản đơn giản trong đó đối số đầu tiên được dành riêng cho tên tệp và tất cả đối số tùy chọn khác sẽ được chuyển đến các phần khác của tập lệnh.Xử lý tất cả các đối số ngoại trừ đoạn đầu tiên (trong tập lệnh bash)
Sử dụng Google tôi thấy this wiki, nhưng nó cung cấp một ví dụ chữ:
echo "${@: -1}"
tôi không thể có được bất cứ điều gì khác để làm việc, như:
echo "${@:2}"
hoặc
echo "${@:2,1}"
Tôi nhận được "Thay thế xấu" từ thiết bị đầu cuối.
Sự cố là gì và làm cách nào để xử lý tất cả trừ đối số đầu tiên được chuyển đến tập lệnh bash?
Để gọi cho bất kỳ ai khác nhầm lẫn, sai shebang được cung cấp khiến '" {@: 2} "' không hoạt động, đó là lý do tại sao câu trả lời đúng phù hợp ở trên. – Guvante
Bạn vừa sử dụng shell mặc định, là dấu gạch ngang trên Ubuntu và nhiều Linux khác. Trong dấu gạch ngang "$ {@: -1}" được hiểu là: {tham số: -word} - Sử dụng Giá trị mặc định và sử dụng từ nếu tham số không được xác định hoặc null. Vì vậy, trong dấu gạch ngang "$ {@: -1}" kết quả chính xác giống như "$ @". Để sử dụng bash, hãy sử dụng dòng đầu tiên sau trong tập tin kịch bản: #!/Bin/bash – luart