В скрипте Bash мне нужно выполнить команду, которая берет список существующих баз данных из PostgreSQL:
getdblist_cmd=(sudo -u $backup_user $psql -p $pgsql_port -U $pgsql_user -d postgres -q -t -c 'SELECT datname from pg_database')
# Get databases list
msg
msg "================================================================="
msg "Getting databases list ..."
dblist=`"${getdblist_cmd[@]}"`
status=$?
if [ "$status" -ne "0" ]; then
return $status
fi
Это работает, но мне нужно исключить базу данных template0
, но это не работает:
getdblist_cmd=(sudo -u $backup_user $psql -p $pgsql_port -U $pgsql_user -d postgres -q -t -c 'SELECT datname from pg_database WHERE datname != \'template0\')'
# Get databases list
msg
msg "================================================================="
msg "Getting databases list ..."
dblist=`"${getdblist_cmd[@]}"`
status=$?
if [ "$status" -ne "0" ]; then
return $status
fi
Возвращает:
root@postgres /u/l/sbin# ./pgsql-backup-full-func.sh
./pgsql-backup-full-func.sh: line 145: unexpected EOF while looking for matching `''
./pgsql-backup-full-func.sh: line 187: syntax error: unexpected end of file
Я знаю, что невозможно исключить одинарные кавычки в Bash, так как мне это сделать?