Shell bash, как эхо-переменные внутри одинарных кавычек

Мне просто интересно, как я могу повторять переменную внутри одинарных кавычек (я использую одинарные кавычки, поскольку в ней есть кавычки).

     echo 'test text "here_is_some_test_text_$counter" "output"' >> ${FILE}

любая помощь будет принята с благодарностью

Ответ 1

Вы не можете.

 echo 'test text "here_is_some_test_text_'"$counter"'" "output"' >> ${FILE}

Ответ 2

использовать printf:

printf 'test text "here_is_some_test_text_%s" "output"\n' "$counter" >> ${FILE}

Ответ 3

Используйте heredoc:

cat << EOF >> ${FILE}
test text "here_is_some_test_text_$counter" "output"
EOF

Ответ 4

с подоболочкой:

var='hello' echo 'blah_'`echo $var`' blah blah';

Ответ 5

Наиболее читаемый, функциональный способ использует фигурные скобки внутри двойных кавычек.

'test text "here_is_some_test_text_'"${counter}"'" "output"' >> "${FILE}"

Ответ 6

Вы можете сделать это следующим образом:

$ counter=1 eval echo `echo 'test text \
   "here_is_some_test_text_$counter" "output"' | \
   sed -s 's/\"/\\\\"/g'` > file

cat file
test text "here_is_some_test_text_1" "output"

Объяснение: Команда Eval обрабатывает строку как команду, поэтому после правильного количества экранирования она даст желаемый результат.

В нем говорится выполнить следующую команду:

'echo test text \"here_is_some_test_text_$counter\" \"output\"'

Команда снова в одной строке:

counter=1 eval echo `echo 'test text "here_is_some_test_text_$counter" "output"' | sed -s 's/\"/\\\\"/g'` > file

Ответ 7

Вывести переменную, обернутую одинарными кавычками:

printf "'"'Hello %s'"'" world