Melewati argumen dengan kutipan dan tanda kutip ganda ke skrip bash

11

Saat ini saya punya:

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

Tetapi ketika saya memanggil skrip saya sebagai:

# script.sh asd "asd" 'asd'

argumen saya diteruskan sebagai: asd asd asd

dan saya mendapatkan output:

eval stuff 'asd asd asd'\015

Saya kecuali a: asd "asd" 'asd'

Bagaimana saya bisa mengubah skrip saya untuk melewati seluruh baris argumen dengan semua kutipan?

Arthur Halma
sumber

Jawaban:

7

Shell Anda tidak meneruskan kuotasi ke skrip. Jika Anda ingin memberikan tanda kutip, hindari tanda kutip dengan backslash:

# ./script.sh asd \"asd\" \'asd\'
hangat
sumber
1
Bukan itu yang saya inginkan, tetapi toh tidak ada solusi lain (menghabiskan sepanjang malam mencari).
Arthur Halma
apa solusinya
Jason
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Derek
sumber