Я хочу прочитать две строки в качестве параметров 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" ...
) , чтобы убедиться , что он может обрабатывать имена файлов , начиная с-
.