Я пытаюсь выполнить следующую команду в сценарии оболочки, где adir="mydir"
и extType= *.txt
cp "$adir/$extType" "$destination"
Однако я получаю :
cp :не может указать «mydir/ *.txt» :Нет такого файла или каталога
но такой каталог есть, и если я запускаю его вручную в командной строке, он работает.
Есть идеи, что не так?
Вы должны изменить "$adir/$extType"
на "$adir/"$extType
, иначе расширение глобуса не произойдет, и он ищет файл точно с именем *.txt
, который не может быть найден, и поэтому он жалуется на это с :
cp: cannot stat ‘mydir/*.txt’: No such file or directory
Равексина уже хорошо заметила, что подстановка не работает в двойных или одинарных кавычках, и, кстати, синтаксис cp неверен для нескольких файлов/одного места назначения и требует флага -t.
В качестве альтернативы вы можете использовать массивы bash :
extType=( "$adir"/*.txt )
cp -t "$destination" "${extType[@]}"
. Альтернативно, петля
for i in "$adir"/*.txt ; do cp "$i" "$destination"; done