将 shell script for loop statement for 多个文件放在一个函数中
Put shell script for loop statement for multiple files in a function
#!/bin/sh
if [[ -d "$path" ]]; then
cd "$path" && echo "$PWD"
for file in *.jpg *.png *.jpeg *.gif *.gifv *.bmp; do
mv "$file" "$destpath"
done
fi
因为POSIX中没有定义数组。我可以将 *.jpg *.png *.jpeg *.gif *.gifv *.bmp;
放在函数中吗?因为我在脚本中多次使用这些。
是否可以重构我的示例中的 cd "$path" && echo "$PWD"
?例如摆脱 cd
命令但仍然达到相同的效果?谢谢!
您可以使用 `ls *.jpg *.png *.jpeg *.gif *.gifv *.bmp` 这种语法而不是创建数组。
#!/bin/bash
if [[ -d "$path" ]]; then
cd "$path" && echo "$PWD"
for file in `ls *.jpg *.png *.jpeg *.gif *.gifv *.bmp`; do
mv "$file" "$destpath"
done
fi
注意: destpath 应该是绝对路径。如果不是,则将 destpath 视为一个字符串。
这个适用于多种文件类型
for file in *.{jpg,jpeg,png,gif,gifv,bmp}; do
done
#!/bin/sh
if [[ -d "$path" ]]; then
cd "$path" && echo "$PWD"
for file in *.jpg *.png *.jpeg *.gif *.gifv *.bmp; do
mv "$file" "$destpath"
done
fi
因为POSIX中没有定义数组。我可以将
*.jpg *.png *.jpeg *.gif *.gifv *.bmp;
放在函数中吗?因为我在脚本中多次使用这些。是否可以重构我的示例中的
cd "$path" && echo "$PWD"
?例如摆脱cd
命令但仍然达到相同的效果?谢谢!
您可以使用 `ls *.jpg *.png *.jpeg *.gif *.gifv *.bmp` 这种语法而不是创建数组。
#!/bin/bash
if [[ -d "$path" ]]; then
cd "$path" && echo "$PWD"
for file in `ls *.jpg *.png *.jpeg *.gif *.gifv *.bmp`; do
mv "$file" "$destpath"
done
fi
注意: destpath 应该是绝对路径。如果不是,则将 destpath 视为一个字符串。
这个适用于多种文件类型
for file in *.{jpg,jpeg,png,gif,gifv,bmp}; do
done