如何将多个文件作为变量传递给 Bash 脚本?

如何将多个文件作为变量传递给 Bash 脚本?

我有一个 bash 脚本,我们称之为myscript,它应该接受当前工作目录中的文件作为变量并对它们执行各种操作。

我已经能够设置这个:

#!/bin/bash

file=$1

command1 $file
command2 $file

一切正常,当我运行它时,myscript myfile1.ext它正确执行command1 myfile1.ext并且command2 myfile1.ext

问题是我想在同一个实例上传递更多文件名,以加快速度,并能够做到这一点:myscript myfile1.ext myfile2.ext myfile3.ext myfile4.ext并让脚本处理每个文件。现在,即使我传递了更多文件名,也只会处理第一个文件名。

我应该如何修改此脚本以按顺序处理多个文件?

答案1

一种直接的方法是这样的:

#!/bin/sh

for file in "$@"; do
   command1 "$file"
   command2 "$file"
done

笔记:

  • 该代码不是特定于 Bash 的,它可以在sh(因此是我的 shebang)中运行。
  • 引用变量就像我一样。

您可以使用shiftshell 内置命令实现更复杂的逻辑。请参阅文档或者help shift在 Bash 中。

相关内容