Упростите несколько MKDIR и SymLink в цикле Bash

Возможно, у вас нет ротации журнала для этого файла. вы должны очищать этот файл в зависимости от ваших требований, может быть ежедневно, еженедельно, ежемесячно.

 cat /dev/null > /var/log/.rgc/main.log

Кроме того,

выполните lsof | grep main.log , чтобы узнать, какой процесс его создает.

0
13.11.2018, 15:07
1 ответ

Простая петля оболочки:

for subdir in.gradle.m2.mvn.sbt.ivy2; do
    mkdir -p "$SHARED_VOL/track/$TRACK/$subdir"
    rm -rf "$HOME/$subdir"
    ln -s "$SHARED_VOL/track/$TRACK/$subdir" "$HOME"
done

Если вы хотите использовать отдельный массив в bash, например:

dirs=(.gradle.m2.mvn.sbt.ivy2 )

for subdir in "${dirs[@]}"; do
    mkdir -p "$SHARED_VOL/track/$TRACK/$subdir"
    rm -rf "$HOME/$subdir"
    ln -s "$SHARED_VOL/track/$TRACK/$subdir" "$HOME"
done

Или, для/bin/sh:

set --.gradle.m2.mvn.sbt.ivy2

for subdir do
    mkdir -p "$SHARED_VOL/track/$TRACK/$subdir"
    rm -rf "$HOME/$subdir"
    ln -s "$SHARED_VOL/track/$TRACK/$subdir" "$HOME"
done

Для дополнительной безопасности вы можете использовать set -uи/или set -eперед запуском этих циклов. set -eзавершит сценарий в случае возникновения ошибки, а set -uбудет интерпретировать раскрытие неустановленной переменной как ошибку (для перехвата любых имен переменных с ошибками, например ).

2
28.01.2020, 02:31

Теги

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