Ответ 1
Вы не можете.
echo 'test text "here_is_some_test_text_'"$counter"'" "output"' >> ${FILE}
Мне просто интересно, как я могу повторять переменную внутри одинарных кавычек (я использую одинарные кавычки, поскольку в ней есть кавычки).
echo 'test text "here_is_some_test_text_$counter" "output"' >> ${FILE}
любая помощь будет принята с благодарностью
Вы не можете.
echo 'test text "here_is_some_test_text_'"$counter"'" "output"' >> ${FILE}
использовать printf:
printf 'test text "here_is_some_test_text_%s" "output"\n' "$counter" >> ${FILE}
Используйте heredoc:
cat << EOF >> ${FILE}
test text "here_is_some_test_text_$counter" "output"
EOF
с подоболочкой:
var='hello' echo 'blah_'`echo $var`' blah blah';
Наиболее читаемый, функциональный способ использует фигурные скобки внутри двойных кавычек.
'test text "here_is_some_test_text_'"${counter}"'" "output"' >> "${FILE}"
Вы можете сделать это следующим образом:
$ 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
Вывести переменную, обернутую одинарными кавычками:
printf "'"'Hello %s'"'" world