bash - Trouble escaping quotes in a variable held string during a Sub-shell execution call -
this question has answer here:
i'm trying write database call within bash script , i'm having problems sub-shell stripping quotes away.
this bones of doing.
#--------------------------------------------- #! /bin/bash export command='psql ${db_name} -f , -t --no-align -c "${sql}" -o ${export_file} 2>&1' psql_return=`${command}` #---------------------------------------------
if use 'echo' print out ${command} variable output looks fine:
echo ${command}
screen output:-
#--------------- psql drupal7 -f , -t --no-align -c "select distinct hostname accesslog;" -o /drupal/interfaces/exports/ip_list.dat 2>&1 #---------------
also if cut , paste screen output executes fine.
however, when try execute command variable within sub-shell call, gives error message. error psql client effect quotes have been removed around ${sql} string. error suggests psql trying interpret terms in sql string parameters.
so seems string , quotes composed correctly quotes around ${sql} variable/string being interpreted sub-shell during execution call main script.
i've tried escape them using various methods: \", \\", \\\", "", \"" '"', \'"\', ... ...
can see 'try all' approach no expert , it's driving me mad.
any appreciated.
charlie101
instead of storing command in string var better use bash array here:
cmd=(psql ${db_name} -f , -t --no-align -c "${sql}" -o "${export_file}") psql_return=$( "${cmd[@]}" 2>&1 )
Comments
Post a Comment