为函数中的多个文件放置shell脚本for loop语句

时间:2017-10-21 10:25:06

标签: shell posix

#!/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命令,但仍然达到同样的效果?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用`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视为字符串。

答案 1 :(得分:0)

这个适用于多种文件类型

for file in *.{jpg,jpeg,png,gif,gifv,bmp}; do
done