Как я могу избежать аргументов, переданных в командной строке bash-скрипта - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть одна переменная, которая исходит от где-то, как:

VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/'

Теперь у меня есть такая команда

./myscript.sh '$VAR1'

Я получаю $ VAR1 из некоторого процесса сравнения, и когда я его отображаю, он выглядит точно так же, как и выше.

Теперь эта команда не выполняется, поскольку внутри переменной уже есть одинарные кавычки. В процессе, в котором я его использую, он расширяется в тот момент, что вызывает эту ошибку.

У меня есть контроль над myscript.sh, но не над командой.

Есть ли способ получить переменную внутри моего скрипта?

1 Ответ

0 голосов
/ 06 сентября 2018

То, что вы говорите, не может быть ошибочным при переходе к вашему сценарию. Возможно, у вашего script есть проблема с обработкой (или команда, в которой этот аргумент будет передаваться в него), которая не может правильно раскрыть переменную. Вы можете использовать printf с модификатором %q, чтобы экранировать все специальные символы, а затем передать его в свой скрипт:

./myscript.sh "$(printf '%q\n' "$VAR1")"

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

VAR2="$(printf '%q\n' "$VAR1")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...