Как исправить имена файлов с помощью тире или пробела
Я создал файл bash, но когда я запускаю его для тех файлов (или папок), которые имеют "пробел" или "-", моя команда не работает! как решить эту проблему.
#!/bin/bash
dpi=$(zenity --entry --text "DPI" --entry-text "72")
width=$(zenity --entry --text "Width (feet)")
height=$(zenity --entry --text "Height (feet)")
w=$(echo "scale=2;($width*12*$dpi);"|bc)
h=$(echo "scale=2;($height*12*$dpi);"|bc)
g="$w""x""$h"
FILES=($(zenity --file-selection --multiple --file-filter=""*.jpg" "*.JPG" "*.jpeg" "*.png" "*.PNG"" --title "Pick a file"))
for file in "$FILES"
do
convert -units PixelsPerInch -density "$dpi"x"$dpi" -geometry "$g"! -quality 100 "$file" "$file"."JPG"
done
1 ответ
Решение
Используйте двойные кавычки вокруг переменных, чтобы предотвратить разбиение слов.
Ты можешь сделать:
for file in "${FILES[@]}"; do
if [[ $file == /* ]] && [[ -f $file ]]; then
convert -units PixelsPerInch -density "${dpi}"x"$dpi" \
-geometry "$g"! -quality 100 "$file" "$file"."JPG"
fi
done
Обратите внимание, что вам не нужно заключать переменные в кавычки [[
как это ключевое слово оболочки.
Также вы должны использовать двойные кавычки вокруг подстановки команд $()
поскольку они также страдают от разделения слов.