почему grep '\ ;.' expand to grep '\' '\;.' \ '' 'при выполнении над ssh?

$cat test.sh ssh HOST -l root -o StrictHostKeyChecking=no -q "/bin/bash -l -c /bin/env | grep -w PATH | grep '\;.'" $bash -x test.sh + ssh HOST -l root -o StrictHostKeyChecking=no -q '/bin/bash -l -c /bin/env | grep -w PATH | grep '\''\;.'\''' 

  • Многострочная переменная с пробелами, добавление каждой строки в массив
  • как выразить строку в оболочке?
  • cp не работает в скрипте, но работает в терминале
  • Подстановка переменных grep и командной строки
  • Цитирование и побег
  • Есть ли способ получить * фактические * (неинтерпретированные) аргументы оболочки в функции или скрипте?
  • Bash - почему я могу выполнять командную строку с конвейерами только через «bash -c»?
  • Echo строка с переменной в ней без расширения / оценки
  • One Solution collect form web for “почему grep '\ ;.' expand to grep '\' '\;.' \ '' 'при выполнении над ssh?”

    Это не связано с SSH. Аргумент -x для bash – это команда set bash, которая отображает аргументы команды в расширенной форме. Вот почему строки с двойными кавычками отображаются как одинарные кавычки.

     $ cat test.sh echo "here are 'some single quotes' inside double quotes" $ bash -x test.sh + echo 'here are '\''some single quotes'\'' inside double quotes' here are 'some single quotes' inside double quotes 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.