Pregunta

necesito para ejecutar este comando

psql -c "create database $var with encoding 'unicode';" -U edumate template1

en el guión bajo diferentes usuarios. La sintaxis es su su postre -c 'some command' por lo que hay otras cotizaciones requeridas. También tenga en cuenta que el comando psql tiene $var variable dentro.

por lo que 'algún comando' = -c psql "crear base de datos de $ var con la codificación 'unicode';" -U edumate template1

y 'algún comando' debe estar entre comillas también (supongo)

¿Fue útil?

Solución

Hay un truco que puedes usar en cualquier momento es necesario tener la cáscara aceptan como un solo argumento algo que tiene dos comillas simples y comillas dobles. Debido a que la cáscara no le permite escapar de las cotizaciones, es necesario convertirlo en múltiples cadenas entre comillas colindantes, el cambio entre comillas simples y dobles según sea necesario para proteger lo que hay dentro. Es feo, pero funciona. Por ejemplo, para tener

   He said "It's done"

sea un solo argumento, se podría ABUT las tres cadenas:

   'He said "It'   - protect this substring with single quotes
   "'"             - protect this substring with double quotes
   's done"'       - protect this substring with single quotes

para obtener:

   'He said "It'"'"'s done"'

En el caso de que daría una muy feo:

su postre -c 'psql -c "create database '"$var with encoding 'unicode';"'" -U edumate template1'

Otros consejos

Se puede tratar sudo en lugar de su por ejemplo.

sudo psql -c "create database $var with encoding 'unicode';" -U edumate template1

(Nota: así que no he probado este comando exactamente como no tengo psql conmigo en este momento)

Yo entraría esto en un archivo de script (lo inserta en un editor como vi y guardarlo en un archivo). Entonces, chmod + x y luego hacer su su -c '<filename>'

Si no desea guardar en un archivo, entonces usted tendrá que escapar de sus comillas con \" o \' dentro de su comando dependiendo de qué citar decide utilizar con su -c

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top