Я установил 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 с запрещенной командой.
Как я могу решить свою проблему? Или может быть лучший псевдоним использования?
В обычном использовании у Вас не должно быть причины использования плоскости $*
. Необходимо всегда использовать "$@"
(обратите внимание, что кавычки включены):
#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table "$@"
Только с "$@"
будет, Ваши аргументы сценария pe передали как есть команде, это безопасно от полевого разделения и globbing.
Для наблюдения различия запустите скрипт, содержащий
#!/bin/bash
printf "%s\n" $*
printf "%s\n" $@
printf "%s\n" "$*"
printf "%s\n" "$@"
с различными аргументами.