Создание каталогов со сценарием Bash

Я смог исправить это, выполнив описанные здесь шаги, установив версию ядра 4.15.10-041510-generic.

1
задан 14 May 2018 в 20:07

3 ответа

Ядро проблемы: ваш скрипт cd вернулся к dump, а не к родителю dump/.

На первой итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует dump/var1, созданный вами cd в dump/var1. Когда cd .. происходит, вы возвращаетесь к dump/. Текущий рабочий каталог dump, и там есть только var1, больше ничего.

На второй итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует Ваш скрипт все еще делает cd .. , поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/.

Для третьей итерации:

Ваш скрипт по-прежнему выполняет cd .., поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/. dump/var1

Вы можете это ясно видеть, когда вы выполняете наш скрипт с set -x для вывода отладки, добавленного после строки #!/bin/bash или путем [ f40] как первая команда на каждой итерации скрипта.

Как я рекомендую исправить ваш скрипт, сначала cd в dump/, а затем запустите цикл for. Другими словами:

cd "$D"
for i in {1..24}
do
    mkdir "$i"
    cd "$i"
    # do whatever you want inside "$i"
    cd ..
done

Среди прочего, я предлагаю использовать [ -d "dump" ] вместо -e, потому что это поможет вам убедиться, что существующий файл на самом деле является каталогом, хотя это может занять дополнительные соображения.

2
ответ дан 22 May 2018 в 10:42

Ядро проблемы: ваш скрипт cd вернулся к dump, а не к родителю dump/.

На первой итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует dump/var1, созданный вами cd в dump/var1. Когда cd .. происходит, вы возвращаетесь к dump/. Текущий рабочий каталог dump, и там есть только var1, больше ничего.

На второй итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует Ваш скрипт все еще делает cd .. , поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/.

Для третьей итерации:

Ваш скрипт по-прежнему выполняет cd .., поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/. dump/var1

Вы можете это ясно видеть, когда вы выполняете наш скрипт с set -x для вывода отладки, добавленного после строки #!/bin/bash или путем pwd как первая команда на каждой итерации скрипта.

Как я рекомендую исправить ваш скрипт, сначала cd в dump/, а затем запустите цикл for. Другими словами:

cd "$D" for i in {1..24} do mkdir "$i" cd "$i" # do whatever you want inside "$i" cd .. done

Среди прочего, я предлагаю использовать [ -d "dump" ] вместо -e, потому что это поможет вам убедиться, что существующий файл на самом деле является каталогом, хотя это может занять дополнительные соображения.

2
ответ дан 17 July 2018 в 14:18

Ядро проблемы: ваш скрипт cd вернулся к dump, а не к родителю dump/.

На первой итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует dump/var1, созданный вами cd в dump/var1. Когда cd .. происходит, вы возвращаетесь к dump/. Текущий рабочий каталог dump, и там есть только var1, больше ничего.

На второй итерации:

Вы начинаете в родительском каталоге dump, где dump/ существует Ваш скрипт все еще делает cd .. , поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/.

Для третьей итерации:

Ваш скрипт по-прежнему выполняет cd .., поэтому до 3-го итерационного текущего рабочего каталога изменяется от родителя dump/ до dump/. dump/var1

Вы можете это ясно видеть, когда вы выполняете наш скрипт с set -x для вывода отладки, добавленного после строки #!/bin/bash или путем pwd как первая команда на каждой итерации скрипта.

Как я рекомендую исправить ваш скрипт, сначала cd в dump/, а затем запустите цикл for. Другими словами:

cd "$D" for i in {1..24} do mkdir "$i" cd "$i" # do whatever you want inside "$i" cd .. done

Среди прочего, я предлагаю использовать [ -d "dump" ] вместо -e, потому что это поможет вам убедиться, что существующий файл на самом деле является каталогом, хотя это может занять дополнительные соображения.

2
ответ дан 20 July 2018 в 14:22

Другие вопросы по тегам:

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