Проблема на выполненном mysql с аргументами от собственного сценария

Я установил Xubuntu 16.04 и сервер mysql 5.7.

Я создаю простой сценарий с именем mysql-wrapper:

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table $*

Теперь я выполняю команду, и она выполняется успешно:

mysql-wrapper -e "STATUS"

Затем я пробую выполненный, затем управляют (с пространством):

mysql-wrapper -e "SHOW TABLES"

Я получаю проблему: mysql печатают меня справка для команд, как я выполняю mysql с запрещенной командой.

Как я могу решить свою проблему? Или может быть лучший псевдоним использования?

1
задан 27 October 2016 в 09:57

1 ответ

В обычном использовании у Вас не должно быть причины использования плоскости $*. Необходимо всегда использовать "$@" (обратите внимание, что кавычки включены):

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table "$@"

Только с "$@" будет, Ваши аргументы сценария pe передали как есть команде, это безопасно от полевого разделения и globbing.

Для наблюдения различия запустите скрипт, содержащий

#!/bin/bash
printf "%s\n" $*
printf "%s\n" $@
printf "%s\n" "$*"
printf "%s\n" "$@"

с различными аргументами.

2
ответ дан 7 December 2019 в 13:40

Другие вопросы по тегам:

Похожие вопросы: