сценарий оболочки удаляет 'при использовании в echo - PullRequest
0 голосов
/ 20 апреля 2020

Я готовлю динамический c контрольный файл из сценария оболочки. При этом я печатаю строку как

echo 'TEST               "lpad(trim(replace(:TEST1,'-','')),9,'0')",'` to a file `test.txt

Но когда я использую вышеупомянутое утверждение, моя оболочка удаляет ' из строки, т.е.

TEST NEXT     *   ,  O(") CHARACTER SQL
string for column : "lpad(trim(replace(:TEST1,-,)),9,0)"

, здесь мы можем, что единственный цитаты удалены.

Кто-нибудь, пожалуйста, помогите мне, почему это происходит?

1 Ответ

0 голосов
/ 20 апреля 2020

почему это происходит?

Одиночные кавычки не вкладываются. Таким образом, одна одинарная кавычка заканчивает цитирование, а другая перезапускает другую кавычку.

echo 'inside single quotes'outside single quotes'inside single quotes'

Если вы хотите, чтобы буквальные одинарные кавычки были в вашем выводе, прекратите одинарную кавычку, экранируйте символ цитирования и перезапустите одинарную кавычку с '\'':

 echo 'TEST               "lpad(trim(replace(:TEST1,'\''-'\'','\'\'')),9,'\''0'\'')",'

или используйте двойные кавычки:

 echo "TEST               \"lpad(trim(replace(:TEST1,'-','')),9,'0')\","
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...