Как записать функцию в ударе?

Базы данных information_schema и mysql есть ли по умолчанию. information_schema содержит полезную информацию о состоянии Вашего mysql сервера и механизмов устройства хранения данных, которые Вы используете, это только для чтения. Дб mysql хранит определенные конфигурации Вашего сервера MySQL, как для exmample пользователи и их хэши пароля, это доступно для редактирования.

Я не думаю дб USER то, что Вы упоминаете, является одним из значения по умолчанию dbs, так, чтобы, должно быть, был создан Вами.

2
25.07.2014, 23:15
2 ответа

Можно немного изменить код:

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.

3
27.01.2020, 21:52

Возвращение должно быть целым числом, поэтому 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.

.
4
27.01.2020, 21:52

Теги

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