Цикл For не будет перебирать список, если в качестве аргумента указан путь

  1. Сделайте резервную копию ваших данных.

  2. Используйте живую USB-систему или аналогичную, а затем из нее:

  3. Переместите своп в конец sda2.

  4. Уменьшить sda2.

  5. Увеличить sda1.

На самом деле нет смысла сохранять логический sda2 только для подкачки, поэтому вы можете предпочесть удалить подкачку, а затем sda2, и, наконец, просто создать новый раздел подкачки в конце и продолжить с пунктом 5.

2
02.12.2021, 11:56
1 ответ

Вы должны знать, как bash интерпретирует подстановочные знаки и аргументы. Когда есть подстановочный знак, bash вовремя интерпретирует его и заменяет всеми соответствующими файлами. И это происходит, когда вы заменяете $1 на./ *-, он берет все файлы из текущего каталога и циклически перебирает их.

Если у вас есть

for file in $1 ; do

потребуется только первый аргумент. Это не то, что вы хотите. Если вы хотите просмотреть все файлы, вам нужно использовать:

for file in $* ; do

(который будет принимать ВСЕ аргументы)

Кроме того, вы можете перебирать их, используя shift-, которая удаляет первый аргумент, пока есть другие:

while [ $# -gt 0 ]
do
    file=$1
    shift
   ...
done
0
03.12.2021, 07:55

Теги

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