Мне удалось вырезать и вставить ваш код в файл, и он работал правильно. Если вы выполните это так, он должен работать:
Ваш "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
Вы можете получить эту ошибку b / c того, как вы вводите (с трубкой, морковкой и т. Д.). Вы также можете попробовать разделить условие на два:
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