Что означают эти команды?

Если у Вас есть ssh сервер, работающий на Вашей домашней машине, можно сделать реверс scp:

[student@university ~/rather/long/path/to/interesting/file]$ scp ./secrect.txt user@myhomesystem.net:~

2
12.02.2014, 20:33
5 ответов

Другие уже упомянули это $# количество параметров командной строки, таким образом, я проигнорирую ту часть Вашего вопроса.

Данный cmd1 && cmd2, оболочка сначала выполняется cmd1. Если cmd1 сбои, все сбои выражения. Если cmd1 успешно выполняется, оболочка продолжает выполняться cmd2. Все выражение успешно выполняется если оба cmd1 и cmd2 успешно выполниться. Так, && оператор является булевской переменной замыкания накоротко И примененный к командам оболочки. Использование этого оператора может быть заменено

if cmd1
then
    cmd2
fi

Данный cmd1 || cmd2, оболочка сначала выполняется cmd1. Если это успешно выполняется, все выражение успешно выполняется. Иначе оболочка выполняется cmd2 и успешность или неуспешность выражения определяется cmd2. Короче говоря, это - булевская переменная замыкания накоротко ИЛИ примененный к командам оболочки. Можно заменить эту форму

if ! cmd1
then
    cmd2
fi

Я тщательно использовал фразы, за которыми следуют / успешно выполняется и отказавший / сбои выше. Успех, для команд оболочки, определяется как статус выхода процесса нуля. Отказ является любым ненулевым состоянием. Однако пытаясь понять && и || операторы с точки зрения статусов выхода, по крайней мере, мне, путая, так как Вы заканчиваете со странным видом инвертированной логики.

5
27.01.2020, 21:49

Это является в значительной степени прямым на самом деле.

Сценарий проверяет, получает ли это точно 3 partameters, это [ $# -eq 3 ] часть. В противном случае затем { echo error ; exit 255 ; } часть будет выполняться. Код выхода 255 имеет особое значение, это означает, что "Статус выхода из диапазона" видит здесь. Я думаю, что это немного неправильно употребляется здесь, но возможное.

3
27.01.2020, 21:49

$ # является количеством аргументов оболочке. Так, первая строка говорит "выход, если нет 3 аргументов", потому что правильная часть (после ||) только выполняется, если левая часть не верна. || логическое или.

255, поскольку код возврата может быть произвольным.

сценарии возвратятся 0, если слово "строка" будет во входе.

Это помогает?

2
27.01.2020, 21:49
  • 1
    не совсем произвольны, особенно 255 не произвольно! –   15.02.2012, 17:46

На одной стороне или оператор у Вас есть тест ([) функция, если это оценивает к истинному (который это будет, когда $ # будет равен три), затем, мы не должны даже потрудиться проверять otherside. Если это - ложь, мы должны попробовать другую сторону, которая в этом случае является функцией, чтобы повторить ошибку и затем выйти. Та же функциональность могла быть выполнена с более подробным сценарием:

if [ $# -ne 3 ]
then
  echo error
  exit 255
fi
1
27.01.2020, 21:49

Строка с grep команда делает exit 0 если "строка" будет во входе, то иначе код выхода будет 1. Более явный путь был бы:

grep -q "string"
if [ $? -eq 0 ]
then
  exit 0
else
  exit 1
fi
1
27.01.2020, 21:49

Теги

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