Я пытаюсь сделать простую проверку состояния, но это не похоже на работу.
Если $#
равно 0
или больше, чем 1
тогда сказать привет.
Я пробовал следующий синтаксис без успеха:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
bash
unix
if-statement
sh
клубника
источник
источник
>
перенаправление вывода в sh / bash. Теперь у вас, вероятно, есть файл с именем1
.Ответы:
Это должно работать:
Я не уверен, отличается ли это в других оболочках, но если вы хотите использовать <,>, вам нужно поместить их в двойные скобки, например:
источник
Этот код работает для меня:
Я не думаю, что sh поддерживает "==". Используйте "=" для сравнения строк и -eq для сравнения целых.
Больше подробностей.
источник
-gt
больше чем. Или просто замените все это[ $# -ne 1 ]
.Если вы используете код выхода bash, статус $? как переменная, лучше сделать это:
Потому что, если вы делаете:
Левая часть или изменяет $? переменная, поэтому правая часть OR не имеет исходного $? ценность.
источник
Иногда вам нужно использовать двойные скобки, в противном случае вы получите ошибку, как слишком много аргументов
источник
Если скрипт bash
источник
Вы пробовали что-то вроде этого:
источник
echo
S привет , даже если у меня есть один аргумент.$#
может быть возвращаемое значение первого теста?Из справочного руководства Bash → 3.4.2 Специальные параметры
Следовательно,
$#
всегда будет либо 0, либо большее целое число.Поэтому, если вы хотите что-то сделать, когда значение
$#
равно 0 или больше 1, вам просто нужно проверить,$#
есть или нет1
:Это использует синтаксис:
источник
[[ -n $A ]] && echo 1 || echo 2
И в баш
ИЛИ в Баш
источник