for i in *.jpg
do
j = '$i | cut -d . -f 1'
convert $i $j".png"
done
temp.sh:第 3 行:j:未找到命令
我了解 mogrify,只是想知道如何在 bash 中获取变量。
答案1
你也可以使用 bash 的内置参数扩展删除第一个点以及其后的所有内容:j="${i%%.*}"
如果你想删除最后的点及其后的任何内容(即文件的扩展名),使用:j="${i%.*}"
例子:
$ i="file.with.dots.ext"
$ echo "${i%%.*}"
file
$ echo "${i%.*}"
file.with.dots
答案2
您必须删除周围的空格=
:
for i in *.jpg
do
j=`echo $i | cut -d . -f 1`
convert $i $j".png"
done
答案3
此外,如果任何文件名包含任何特殊字符(例如空格),您的脚本将无法按预期工作。您应该养成始终将变量引用括在双引号中的习惯。试试这个:
for i in *.jpg
do
j="$(echo "$i" | cut -d . -f 1)"
convert "$i" "${j}.png"
done