Арифметические двоичные операторы -gt, -lt дают ошибку, но работают в сценарии оболочки

Ваше предположение не совсем правильно. Местоположение папки /var является предметом переговоров, то есть вы можете использовать альтернативный раздел или том, на котором можно найти папку /var. Независимо от того, где находится папка /var, папка /var/run является символической ссылкой на папку /run, и ее содержимое остается после перезагрузки, хотя многие из файлов в /run сгенерированы или изменены при загрузке службами, начиная во время загрузки. Таким образом, это службы, такие как mysqld, которые требуют загрузки файлов в каталог /var/run и настроены на создание подкаталогов, если они не существуют в настоящее время.

2
задан 19 August 2011 в 21:25

12 ответов

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash

clear
echo "Enter 1st number"
read n1
echo "Enter 2nd number"
read n2
echo "Multi is $((n1 * n2))"
if ((n1 > n2)); then
  echo "$n1 is bigger than $n2"
else
  echo "$n2 is bigger than $n1"
fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 25 May 2018 в 19:16
  • 1
    Любопытно, есть ли необходимость, кроме удобства, сделать исполняемый файл сценария, а не вызывать bash script.sh? Насколько я понимаю, они оба переводят на те же действия со стороны оболочки, но я могу ошибаться. – Kris Harper 18 August 2011 в 18:11
  • 2
    @ root45: нет никакой разницы, о которой я знаю. Кроме того, последний работает также, если script.sh не помечен как исполняемый файл. Но пользователь не должен знать, как разработчик пишет приложение, он должен просто назвать его по имени. В /usr/bin существуют бинарные файлы ELF, perl, python, sh, bash, а также другие типы приложений. – enzotib 18 August 2011 в 18:38

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash clear echo "Enter 1st number" read n1 echo "Enter 2nd number" read n2 echo "Multi is $((n1 * n2))" if ((n1 > n2)); then echo "$n1 is bigger than $n2" else echo "$n2 is bigger than $n1" fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 25 July 2018 в 21:26

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash clear echo "Enter 1st number" read n1 echo "Enter 2nd number" read n2 echo "Multi is $((n1 * n2))" if ((n1 > n2)); then echo "$n1 is bigger than $n2" else echo "$n2 is bigger than $n1" fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 2 August 2018 в 03:05

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash clear echo "Enter 1st number" read n1 echo "Enter 2nd number" read n2 echo "Multi is $((n1 * n2))" if ((n1 > n2)); then echo "$n1 is bigger than $n2" else echo "$n2 is bigger than $n1" fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 4 August 2018 в 18:56

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash clear echo "Enter 1st number" read n1 echo "Enter 2nd number" read n2 echo "Multi is $((n1 * n2))" if ((n1 > n2)); then echo "$n1 is bigger than $n2" else echo "$n2 is bigger than $n1" fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 6 August 2018 в 03:18

[ - это встроенная команда, также известная как test, и поскольку для всех команд требуется, по крайней мере, пространство, чтобы отделить ее от других слов в команде. [ также доступен в качестве регулярной команды в /usr/bin/[ или /usr/bin/test.

Присутствие окончательного ] вместо этого является требованием команды при вызове как [ и пространства вокруг него требуются как для каждого параметра команды.

Тем не менее, в bash вы должны использовать команду [[, которая имеет некоторые преимущества перед [, например, поддерживая && и || для логических операций, кроме -a и -o.

Кроме того, для выполнения целочисленных арифметических операций и сравнения целых чисел лучше использовать арифметические разложения $((math operations)) и соответствующие команда ((math ops)).

С этими наблюдениями ваш скрипт может быть:

#!/bin/bash clear echo "Enter 1st number" read n1 echo "Enter 2nd number" read n2 echo "Multi is $((n1 * n2))" if ((n1 > n2)); then echo "$n1 is bigger than $n2" else echo "$n2 is bigger than $n1" fi

Не забудьте сделать его исполняемым (chmod +x my-script), затем выполните его с помощью ./my-script.

9
ответ дан 7 August 2018 в 20:59

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 25 May 2018 в 19:16

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 25 July 2018 в 21:26

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 2 August 2018 в 03:05

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 4 August 2018 в 18:56

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 6 August 2018 в 03:18

Для операторов условного if bash, вы должны иметь пробелы прямо перед и после вашего состояния. Ваш должен выглядеть так:

if [ $n1 -lt $n2 ]

вместо

if [$n1 -lt $n2]

Goofy, но это оболочка bash.

5
ответ дан 7 August 2018 в 20:59

Другие вопросы по тегам:

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