我有一个 bash 脚本:
#!/bin/bash
convert "$1" -resize 50% "$2"
Run Code Online (Sandbox Code Playgroud)
我不想在脚本运行时传递两个参数,我只想提及源(或输入文件名),而输出文件名应该从源文件名自动生成。像这样的东西"$1" | cut -d'.' -f1".jpg"。如果输入文件名为myimage.png,则输出名称应为myimage.jpg. .jpg应附加到源文件名的第一部分。如果参数是: ,它也应该有效*.png。那么如何修改我的脚本呢?
扩展${X%pattern}删除pattern了 $X 的结尾。
convert "$1" -resize 50% "${1%.*}.jpg"
Run Code Online (Sandbox Code Playgroud)
要处理多个文件:
for filename ; do
convert "$filename" -resize 50% "${filename%.*}.jpg"
done
Run Code Online (Sandbox Code Playgroud)
这将遍历每个命令行参数,并且是for filename in "$@". 您无需担心检查参数是否为*.png- 外壳程序会为您展开该参数- 您将简单地收到文件名的展开列表。