Передача аргументов с кавычками и двойными кавычками в скрипт bash

11

На данный момент у меня есть:

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

Но когда я называю свой сценарий как:

# script.sh asd "asd" 'asd'

мои аргументы переданы как: asd asd asd

и я получаю вывод:

eval stuff 'asd asd asd'\015

Я кроме: asd "asd" 'asd'

Как я могу изменить свой скрипт, чтобы передать всю строку аргументов со всеми кавычками?

Артур Халма
источник

Ответы:

7

Ваша оболочка не передает кавычки в скрипт. Если вы хотите передать кавычки, избегайте их с обратной косой чертой:

# ./script.sh asd \"asd\" \'asd\'
teppic
источник
1
Это не то, что я хочу, но в любом случае нет других решений (потратил всю ночь в поисках).
Артур Халма
что решение
Джейсон
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Дерек
источник