Я пытаюсь написать Bash Script, который будет создавать символические ссылки, но исключать определенные файлы.Symlink Exclude in Bash Script
Я уже посмотрел эту тему, но это не помогает мне:
https://serverfault.com/questions/165484/how-to-symlink-folders-and-exclude-certain-files
Так что это сценарий я использую в данный момент:
#! /bin/bash
target=/home/csgo/game/output
cs=/home/csgo/game/csgo-deagle1
exclude=("*.conf" "*.cfg" "*txt" "*.ini" "*.smx" "*.mp3" "*.sh")
for file in ${cs}; do
for ((index = 0; index < ${#exclude[@]}; index++)); do
if [[ ${file} != ${exclude[${index}]} ]]; then
ln -s ${file} ${target}
elif [[ ${file} == ${exclude[${index}]} ]]; then
cp ${file} ${target}
fi
done
done
Сценарий должен посмотрите в списке исключений, и если расширение исключено, оно не должно содержать символическую ссылку; он должен скопировать файл вместо него.
В настоящий момент скрипт создает символическую ссылку в каталоге, но все внутри него копируется.
В качестве побочного примечания, 'elif' является излишним. 'If' уже оценил условие, а' cp' должен просто находиться в ветке 'else'. Не нужно снова проверять одно и то же. – tripleee
Более тангенциально, '$ {file}' эквивалентно '$ file', а фигурные скобки необходимы и полезны, когда вам нужно интерполировать переменную в середине какого-либо другого текста, например' foo $ {file} bar' vs 'foo $ filebar' (где последний ссылается на предположительно несуществующую переменную' $ filebar') – tripleee