Сценарий думает, что вход является командой?

Если вы понимаете язык программирования Си, то я думаю, что можно переписать исходный код rm и сделать небольшой патч для кернела. Я видел это на одном сервере, и было немыслимо удалять некоторые важные каталоги, и когда вы набираете 'rm -rf /direcotyr', он посылает письмо сисадмину.

0
09.12.2014, 21:22
1 ответ

В этой строке имеется (общая) синтаксическая ошибка (ОК, а не только одна...):

.
[$year>1]
  1. [ - это не специальный символ, а обычная команда. Таким образом, остальная часть строки - это параметры, которые должны быть разделены пробелами: ["$year" > 1 ]

  2. Следующая проблема заключается в том, что > - это не обычный параметр, а символ перенаправления (метахарактер). Таким образом, оболочка видит (например) [2014 и ищет команду с таким именем. Если бы она существовала, оболочка записала бы свой вывод в файл 1]....

Если вы используете [ ... ], то вам нужен оператор -gt (больше):

[ "$year" -gt 1 ]

Альтернативой является использование зарезервированного слова bash [[] вместо []. В качестве разделителя все равно нужно использовать пробелы, но можно опустить кавычки:

[[ $year -gt 1 ]]

или использовать арифметические выражения для сравнения целых чисел:

((year > 1))
1
28.01.2020, 02:51

Теги

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