Базы данных information_schema
и mysql
есть ли по умолчанию. information_schema
содержит полезную информацию о состоянии Вашего mysql сервера и механизмов устройства хранения данных, которые Вы используете, это только для чтения. Дб mysql
хранит определенные конфигурации Вашего сервера MySQL, как для exmample пользователи и их хэши пароля, это доступно для редактирования.
Я не думаю дб USER
то, что Вы упоминаете, является одним из значения по умолчанию dbs, так, чтобы, должно быть, был создан Вами.
Можно немного изменить код:
is_xyz_node() {
host="$1"
for xyznode in $XZY_NODES; do
if [ -n "$xyznode" ] &&
[ "$host" = "$xyznode" ]; then
return 0
fi
done
return 1
}
if is_xyz_node "$1"; then
printf '%s is a xyz node\n' "$1"
else
printf '%s is NOT a xyz node\n' "$1"
fi
Следует отметить, что
return
in bash требует в своем необязательном аргументе целочисленного типа; это заставляет функцию выйти с этим целым числом в качестве своего статуса или со значением $?
, если оно не предоставлено. Поэтому вместо строки необходимо использовать целое число. Целое число должно быть между 0 и включительно; return 0
означает success, любое другое значение означает failure.
Вы должны защитить свои переменные, обернув их в двойные кавычки.
Вы должны добавить тест, что $xyznode
не является нулевым. Как указывает @mikeserv в своем комментарии, возможно, что и $1
, и $xyznode
являются нулевой строкой, поэтому [ '' = '' ]
возвращает true.
Возвращение должно быть целым числом, поэтому 1
или 0
. В bash
, false
было бы 1
и true
было бы 0
. Таким образом, я бы заменил 'N'
на 1
и 'Y'
на 0
также, тогда вы также измените утверждение , если
, так как вы больше не будете совпадать с 'Y'
, вы будете совпадать с 0
.
if [ 'Y' == $(is_xyz_node $1) ]
должно стать
if is_xyz_node $1
, так как функция должна возвращать 1
или 0
, что соответствует true
или false
.