Me enfrenta un pequeño problema aquí, quiero pasar una cadena que contiene espacios en blanco, a otro programa de modo que toda la cadena se trata como un argumento de línea de comando.Preservar espacios en blanco en una cadena como un argumento de línea de comando
En pocas palabras, quiere ejecutar un comando de la siguiente estructura a través de un script de shell bash: command_name -a -b arg1 arg2 -c "arg con espacios en blanco aquí"
Pero no importa cuanto lo intento, la los espacios en blanco no se conservan en la cadena y se tokenizan de forma predeterminada. Una solución favor,
edición: Esta es la parte principal de mi guión:
#!/bin/bash
#-------- BLACKRAY CONFIG ---------------#
# Make sure the current user is in the sudoers list
# Running all instances with sudo
BLACKRAY_BIN_PATH='/opt/blackray/bin'
BLACKRAY_LOADER_DEF_PATH='/home/crozzfire'
BLACKRAY_LOADER_DEF_NAME='load.xml'
BLACKRAY_CSV_PATH='/home/crozzfire'
BLACKRAY_END_POINT='default -p 8890'
OUT_FILE='/tmp/out.log'
echo "The current binary path is $BLACKRAY_BIN_PATH"
# Starting the blackray 0.9.0 server
sudo "$BLACKRAY_BIN_PATH/blackray_start"
# Starting the blackray loader utility
BLACKRAY_INDEX_CMD="$BLACKRAY_BIN_PATH/blackray_loader -c $BLACKRAY_LOADER_DEF_PATH/$BLACKRAY_LOADER_DEF_NAME -d $BLACKRAY_CSV_PATH -e "\"$BLACKRAY_END_POINT\"""
sudo time $BLACKRAY_INDEX_CMD -a $OUT_FILE
#--------- END BLACKRAY CONFIG ---------#
Lo sentimos, pero usted ha proporcionado muy poca información. ¿Qué shell usas (bash, ksh, csh, ...)? ¿Puedes decir qué comando intentas ejecutar? Si se trata de una utilidad UNIX estándar, ¿puede decir su versión? –
script bash. La autorización aquí es lo que estoy tratando de hacer: .... BLACKRAY_END_POINT = "default -p 8890" .... CMD = "$ BLACKRAY_BIN_PATH/blackray_loader -C $ BLACKRAY_LOADER_DEF_PATH/$ BLACKRAY_LOADER_DEF_NAME -d $ BLACKRAY_CSV_PATH - e \ "$ BLACKRAY_END_POINT \" " ... Ahora quiero ejecutar el comando anterior de manera que $ BLACKRAY_END_POINT se trate como una sola cadena y no se convierta en tokenizado. $ BLACKRAY_END_POINT es una cadena que contiene espacios y bash la divide en diferentes palabras. Quiero preservar los espacios y pasar toda la cadena como un único argumento. – crozzfire
Desconocido, meet backslash-double-quote (\ "). Backslash-double-quote, meet unknown. –