Если у Вас есть ssh сервер, работающий на Вашей домашней машине, можно сделать реверс scp
:
[student@university ~/rather/long/path/to/interesting/file]$ scp ./secrect.txt user@myhomesystem.net:~
Другие уже упомянули это $#
количество параметров командной строки, таким образом, я проигнорирую ту часть Вашего вопроса.
Данный cmd1 && cmd2
, оболочка сначала выполняется cmd1
. Если cmd1
сбои, все сбои выражения. Если cmd1
успешно выполняется, оболочка продолжает выполняться cmd2
. Все выражение успешно выполняется если оба cmd1
и cmd2
успешно выполниться. Так, &&
оператор является булевской переменной замыкания накоротко И примененный к командам оболочки. Использование этого оператора может быть заменено
if cmd1
then
cmd2
fi
Данный cmd1 || cmd2
, оболочка сначала выполняется cmd1
. Если это успешно выполняется, все выражение успешно выполняется. Иначе оболочка выполняется cmd2
и успешность или неуспешность выражения определяется cmd2
. Короче говоря, это - булевская переменная замыкания накоротко ИЛИ примененный к командам оболочки. Можно заменить эту форму
if ! cmd1
then
cmd2
fi
Я тщательно использовал фразы, за которыми следуют / успешно выполняется и отказавший / сбои выше. Успех, для команд оболочки, определяется как статус выхода процесса нуля. Отказ является любым ненулевым состоянием. Однако пытаясь понять &&
и ||
операторы с точки зрения статусов выхода, по крайней мере, мне, путая, так как Вы заканчиваете со странным видом инвертированной логики.
Это является в значительной степени прямым на самом деле.
Сценарий проверяет, получает ли это точно 3 partameters, это [ $# -eq 3 ]
часть. В противном случае затем { echo error ; exit 255 ; }
часть будет выполняться. Код выхода 255 имеет особое значение, это означает, что "Статус выхода из диапазона" видит здесь. Я думаю, что это немного неправильно употребляется здесь, но возможное.
$ # является количеством аргументов оболочке. Так, первая строка говорит "выход, если нет 3 аргументов", потому что правильная часть (после ||) только выполняется, если левая часть не верна. || логическое или.
255, поскольку код возврата может быть произвольным.
сценарии возвратятся 0, если слово "строка" будет во входе.
Это помогает?
На одной стороне или оператор у Вас есть тест ([) функция, если это оценивает к истинному (который это будет, когда $ # будет равен три), затем, мы не должны даже потрудиться проверять otherside. Если это - ложь, мы должны попробовать другую сторону, которая в этом случае является функцией, чтобы повторить ошибку и затем выйти. Та же функциональность могла быть выполнена с более подробным сценарием:
if [ $# -ne 3 ]
then
echo error
exit 255
fi
Строка с grep
команда делает exit 0
если "строка" будет во входе, то иначе код выхода будет 1. Более явный путь был бы:
grep -q "string"
if [ $? -eq 0 ]
then
exit 0
else
exit 1
fi