变量多重扩展的for循环
for loop for variable multiple extension
如何更改this:
for file in "$arg"/*.{jpg,jpeg,png} ; do
echo "$file" > z.txt
done
收件人:
for file in "$arg1"/*.{$arg2} ; do
echo "$file" > z.txt
done
因为我会将扩展列表作为单个(逗号分隔)参数获取。以上尝试无效。
使用数组存储扩展,然后遍历数组。
IFS=, read -a extensions <<< "$arg2"
for ext in "${extensions[@]}"; do
for file in "$arg"/*."$ext"; do
echo "$file" > z.txt
done
done
您可以使用 extglob
传递竖线分隔的扩展列表,如下所示:
arg2='jpg|jpeg|png'
shopt -s extglob nullglob
for file in "$arg"/*.@($arg2); do
echo "$file"
done > z.txt
或者,如果您想保留逗号分隔的参数,则使用 bash
替换将逗号替换为竖线,如下脚本所示:
arg2='jpg,jpeg,png'
shopt -s extglob nullglob
for file in "$arg"/*.@(${arg2//,/|}); do
echo "$file"
done > z.txt
如何更改this:
for file in "$arg"/*.{jpg,jpeg,png} ; do
echo "$file" > z.txt
done
收件人:
for file in "$arg1"/*.{$arg2} ; do
echo "$file" > z.txt
done
因为我会将扩展列表作为单个(逗号分隔)参数获取。以上尝试无效。
使用数组存储扩展,然后遍历数组。
IFS=, read -a extensions <<< "$arg2"
for ext in "${extensions[@]}"; do
for file in "$arg"/*."$ext"; do
echo "$file" > z.txt
done
done
您可以使用 extglob
传递竖线分隔的扩展列表,如下所示:
arg2='jpg|jpeg|png'
shopt -s extglob nullglob
for file in "$arg"/*.@($arg2); do
echo "$file"
done > z.txt
或者,如果您想保留逗号分隔的参数,则使用 bash
替换将逗号替换为竖线,如下脚本所示:
arg2='jpg,jpeg,png'
shopt -s extglob nullglob
for file in "$arg"/*.@(${arg2//,/|}); do
echo "$file"
done > z.txt