Мне удалось вырезать и вставить ваш код в файл, и он работал правильно. если ты
выполнить это так, это должно работать:
Ваш "file.sh":
#!/bin/bash
# june 2011
if [ $# -lt 3 -o $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
Команда:
$ ./file.sh arg1 arg2 arg3
Обратите внимание, что файл file.sh должен быть исполняемым:
$ chmod +x file.sh
Возможно, вы получаете эту ошибку из-за того, как вы делаете ввод (без трубы, моркови,
так далее.). Вы также можете попробовать разбить условие на два:
if [ $# -lt 3 ] || [ $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
Или, поскольку вы используете bash
, вы можете использовать встроенный синтаксис:
if [[ $# -lt 3 || $# -gt 3 ]]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
И, наконец, вы, конечно, можете просто проверить, были ли заданы 3 аргумента (чисто,
поддерживает совместимость с оболочкой POSIX):
if [ $# -ne 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi