Я хочу прочитать две строки в качестве параметров bash-скрипта, эти строки должны быть расширениями, затем я хочу заменить расширение файлов первым расширением на второе расширение.
Лучшее, о чем я мог подумать / найти, это:
#!/bin/bash
first=$1
second=$2
for files in *.$1
do
mv "$files" "${files%.$1}.$2"
done
Теперь предположим, что $1есть cpp, и $2естьC
Мои "сомнения":
- будет
.$1равно.cpp? - Является ли
*.$1равно сказать:*.cpp? - Строка 6 равна
mv "$files" "${files%.cpp}.C"? - Будет ли предыдущий код обрабатывать имена файлов с пробелами (например
my file.cpp:) или точками (напримерmy.file.cpp)?
Я знаю, что мог бы ответить на первые 3 вопроса в одном вопросе, но мне нужно понять, что именно происходит, и как каждый оператор ( ./ */ %) будет работать с данной строкой в параметре.
--кmv(какmv -- "$file" ...) , чтобы убедиться , что он может обрабатывать имена файлов , начиная с-.