Расширение MV Brace с добавлением в скрипт - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь переместить фотографии в другой каталог. Он прекрасно работает, когда я запускаю mv из командной строки (в bash и zsh):

mv './DSC_{2385..2387}.NEF*' ./new/STACK_2385-2387

Я написал этот bash-скрипт, который перемещает серию фотографий в другой каталог.

Но нет, если я запускаю его из скрипта:

#/bin/bash
set -x
read START
read END
PREFIX="STACK"
DIRNAME=$PREFIX\_$START-$END
mkdir ./new/$DIRNAME
mv ./DSC_{$START..$END}.NEF* ./new/$DIRNAME

.

$./script.sh
mv ./DSC_{$START..$END}.NEF* ./new/$DIRNAME
+ mkdir ./new/STACK_2385-2387
+ mv './DSC_{2385..2387}.NEF*' ./new/STACK_2385-2387
mv: cannot stat './DSC_{2385..2387}.NEF*': No such file or directory

./new/STACK_2385-2387 создается. Существуют также соответствующие файлы *.NEF raws и *.NEF.xmp sidecar, включая 2385, 2386, и 2387, так что это не проблема.

1 Ответ

0 голосов
/ 16 января 2019

вы можете использовать переменную скобку только со злом eval, как в этом примере

$ a=1; b=10; eval echo {$a..$b}
1 2 3 4 5 6 7 8 9 10

, поэтому вам нужно изменить команду mv на

$ eval mv ./DSC_{$START..$END}.NEF* ./new/"$DIRNAME"

возможно, двойные кавычки и для переменных.

...