tipos invertidas invertida especiales escape concatenar comillas comilla caracteres string bash shell echo

string - invertidas - concatenar comillas javascript



¿Cómo uso las variables en cadenas entre comillas simples? (7)

Me pregunto cómo puedo hacer eco de una variable dentro de comillas simples (estoy usando comillas simples porque la cadena tiene comillas).

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

Cualquier ayuda sería apreciada grandemente


La forma más legible y funcional utiliza llaves dentro de comillas dobles.

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


Las variables se expanden en cadenas entre comillas dobles, pero no en cadenas entre comillas simples:

$ name=World $ echo "Hello $name" Hello World $ echo ''Hello $name'' Hello $name

Si puedes simplemente cambiar las comillas, hazlo.

Si prefiere mantener comillas simples para evitar el escape adicional, en su lugar puede mezclar y combinar comillas en el mismo argumento:

$ echo ''single quoted. ''"Double quoted. "''Single quoted again.'' single quoted. Double quoted. Single quoted again. $ echo ''"$name" has the value ''"$name" "$name" has the value World

Aplicado a su caso:

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


Puedes hacerlo de esta manera:

$ 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"

Explicación : el comando Eval procesará una cadena como comando, por lo que después de la cantidad correcta de escape producirá el resultado deseado.

Dice ejecutar la siguiente cadena como comando:

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

Comando de nuevo en una línea:

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


Salida de una variable envuelta con comillas simples:

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


Utilice un heredoc:

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


con una subshell:

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


utilizar printf:

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