Есть ли другой способ удалить файл без использования
rm
?
busybox rm -f path/to/file
Предполагается, что ваше приложение для планирования позволяет запускать busybox
без ограничений. Поскольку вы не указали, какое это приложение, мы точно не знаем, каковы ограничения, но приведенное выше должно работать, если в приложении есть простая защита молли, предотвращающая выполнение только rm
.
$ reset() { i=$1; }
$ for i in 1 2 3 4 ; do echo -n "$i "; reset 3; echo "$i" ; done;
1 3
2 3
3 3
4 3
i
не делается локальным
в сбросе
, поэтому изменение там видно вне функции. Но изменение на i
не влияет на значения i
, получаемые на следующих итерациях. Слова, перечисленные в команде for
, назначаются i
по одному, по порядку, как и ожидалось.
Так что да, есть «скрытый указатель», который сообщает позицию в списке слов. Должны быть, иначе циклы с повторяющимися словами, например for i in a a a ; делать ...
не будет работать. Здесь i
получает одно и то же значение на каждой итерации, но цикл по-прежнему выполняет фиксированное количество итераций.
Я не уверен, что вы пытаетесь сделать, но
не возвращаете 0
] ("true") из функции, поэтому она никогдане вернется, пока не перепробует все комбинации.$i
нелокальная переменная:
$ foo() { i=1; бар; }
$ бар () { эхо $ я; }
$ фу
1
Вы можете отладить это, увидев, в какой строке находится каждая команда:
trap 'printf "$LINENO" ' DEBUG
$1
является локальным для каждого вызова функциии не переносится, даже когда функция вызывает сама себя:
$ foo() { if [ $# -ne 0 ]; затем повторите «Еще раз»; фу; фи; }
$фу 1
Еще раз
Это относится ко всем основным языкам программирования высокого уровня. В противном случае рекурсия была бы полностью нарушена.