Я пытаюсь написать сценарий bash, который ищет файл в одном каталоге и заменяет его одним и тем же именем из исходного каталога. Когда я запускаю команду find
, это, кажется, установив мой $path
дваждыПолучение дублирующего вывода
for f in build-res/$1/*.png; do
file="$(basename "$f")"
echo "Looking for $file in $TMP"
path="$(find $TMP -type f -name "$file")"
if [[ -z $path ]]; then
echo "Could not find $file in $TMP"
else
echo "Replacing file at $path with $file"
echo "__path__"
echo $path
echo "---"
fi
done
Запуск одной итерации этого цикла выходов что-то вроде
Replacing file at tmp/trx//images/background/background_iphone5.png
tmp/trx//images/background_iphone5.png with background_iphone5.png
__path__
tmp/trx//images/background/background_iphone5.png tmp/trx//images/background_iphone5.png
---
Обратите внимание, как путь повторяется с пространством между ними. Почему это происходит?
Другое примечание, почему оно возвращается с //
на пути? Это, похоже, не проблема, тем более любопытная.
Это не тот же путь дважды. Это два разных пути. –
Двойной '//', вероятно, поступает непосредственно из значения 'TMP'; как он устанавливается? – chepner
Возможно, вы захотите заменить «путь» на массив, 'path = ($ (find $ TMP -type f -name« $ file »)), который позволяет вам проверять количество возвращенных совпадений' [$ {# path [@]} -gt 1] && handle multiples ... ' –