Qui sto affrontando un piccolo problema, voglio passare una stringa contenente spazi bianchi ad un altro programma in modo che l'intera stringa venga trattata come un argomento della riga di comando.Conservazione degli spazi bianchi in una stringa come argomento della riga di comando
Insomma voglio eseguire un comando della seguente struttura attraverso uno script di shell bash: nome_comando -a -b arg1 arg2 -c "arg con spazi bianchi qui"
Ma non importa quanto ci provo, il gli spazi bianchi non sono conservati nella stringa ed è tokenizzato di default. Una soluzione per favore,
edit: Questa è la parte principale del mio script:
#!/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 ---------#
Ci dispiace, ma ci hai fornito informazioni troppo poco. Quale shell usi (bash, ksh, csh, ...)? Puoi dire quale comando cerchi di eseguire? Se si tratta di un'utilità UNIX standard, puoi dire la sua versione? –
script bash. Ok qui è quello che sto cercando di fare: .... 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 \" " ... Ora voglio eseguire il comando precedente in modo che $ BLACKRAY_END_POINT sia trattato come una singola stringa e non venga tokenizzato. $ BLACKRAY_END_POINT è una stringa che contiene spazi e bash la divide in parole diverse. Voglio conservare gli spazi e passare l'intera stringa come un singolo argomento. – crozzfire
Unknown, meet backslash-double-quote (\ "). Backslash-double-quote, meet unknown. –