Выполнить команду внутри kubernetes pod (скрипт bash) - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь выполнить команду внутри контейнера postgres из сценария оболочки.Это то, что я до сих пор:

kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name='FOO';'"

Я получаю следующую ошибку:

ERROR: column "foo" does not exist LINE 1: select count from table where name=FOO; ^

Запрос выполняется нормально внутриконтейнер, так что должно быть что-то не так с тем, как я передаю команду.Я попробовал другой запрос:

kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select * from table;'"

Это работает нормально.Итак, я предполагаю, что это что-то с тем, как я передаю предложение where where name='FOO'.Как я могу заставить это работать.Пожалуйста, помогите мне.

Обновление:

Попытка выхода с использованием:

1: двойные кавычки

kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name=\"FOO\";'"

ERROR:  column "FOO" does not exist
LINE 1: select count from table where name="FOO";
                                            ^

2: одинарные кавычки

kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name=\'FOO\';'"

bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file
command terminated with exit code 1

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Я использовал $$ в кавычках в долларах в предложении where и экранировал их, используя /$.

kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name=\$\$FOO\$\$;'"
0 голосов
/ 03 декабря 2018

Это потому, что кавычки не экранированы должным образом, и тогда FOO считается именем столбца.

Попробуйте

kubectl exec -it <pod_id> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name=\"FOO\";'"
...