gpt4 book ai didi

linux - BASH 中带空格的文件名

转载 作者:IT王子 更新时间:2023-10-29 00:26:02 32 4
gpt4 key购买 nike

我正在尝试编写脚本,将大照片裁剪并调整为高清壁纸。

#! /bin/bash


for i in `ls *.jpg`
do
width=`identify -format '%w' $i`
height=`identify -format '%h' $i`

if [ `echo "$width/$height > 16/9" | bc -l` ]
then
exec `convert $i -resize 1920 -gravity Center -crop '1920x1080+0+0' +repage temp`
else
exec `convert $i -resize x1080 -gravity Center -crop 1920x1080+0+0 +repage temp`
fi

rm $i
mv temp $i
done

但是脚本似乎有问题,文件名有空格(比如 Tumble Weed.jpg)。我该如何解决这个问题?

最佳答案

首先,您不需要ls。通过在 backtics 中使用 ls,您隐式地使 bash 将字符串解析为列表,列表由空格分隔。相反,让 bash 生成列表并在没有这种怪癖的情况下将其分开:

此外,您需要将所有 $i 用法括在引号中,以使 bash 将其作为一个整体替换,而不是作为字符串拆分为单独的单词。

这是演示这两种想法的脚本:

for i in *.jpg ; do 
echo "$i";
done

关于linux - BASH 中带空格的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967707/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com