将 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
  1. 因为POSIX中没有定义数组。我可以将 *.jpg *.png *.jpeg *.gif *.gifv *.bmp; 放在函数中吗?因为我在脚本中多次使用这些。

  2. 是否可以重构我的示例中的 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