Truyền đối số với dấu ngoặc kép và doublequote cho tập lệnh bash


11

Tại thời điểm này tôi có:

#!/bin/bash
screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015'
echo eval 'stuff '"'"$@"'"'\015'

Nhưng khi tôi gọi kịch bản của mình là:

# script.sh asd "asd" 'asd'

đối số của tôi được thông qua là: asd asd asd

và tôi nhận được đầu ra:

eval stuff 'asd asd asd'\015

Tôi ngoại trừ a: asd "asd" 'asd'

Làm cách nào tôi có thể thay đổi tập lệnh của mình để vượt qua toàn bộ dòng đối số với tất cả các trích dẫn?

Câu trả lời:


7

Shell của bạn không chuyển các trích dẫn thông qua kịch bản. Nếu bạn muốn vượt qua dấu ngoặc kép, hãy thoát chúng bằng dấu gạch chéo ngược:

# ./script.sh asd \"asd\" \'asd\'

1
Đó không phải là điều tôi muốn, nhưng dù sao thì không có giải pháp nào khác (dành cả đêm để tìm kiếm).
Arthur Halma

Giải pháp là gì
Jason

4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
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.