从 Bash 中的目录获取文件名

Obtaining file names from directory in Bash

我正在尝试创建一个 zsh 脚本来测试我的项目。老师为我们提供了一些输入文件和预期的输出文件。我需要将 myExecutable 的输出文件与预期的输出文件进行区分。

问题:$iF 是否包含以下代码中的字符串或对文件的某种 bash 引用?

#!/bin/bash
inputFiles=~/project/tests/input/*
outputFiles=~/project/tests/output

for iF in $inputFiles
do
./myExecutable $iF > $outputFiles/$iF.out
done

注:

任何有助于实现我的目标的提示都会很好。我是 shell 脚本的新手,我正在使用以下网站快速编写脚本(因为我必须专注于项目开发而不是在额外的东西上浪费时间):

Grammar for bash language

Begginer guide for bash

正如您的代码,$iF 包含文件的完整路径作为字符串。

N.B:不要使用for iF in $inputFiles

改用for iF in ~/project/tests/input/*。否则,如果路径包含空格或换行符,您的代码将失败。

如果您需要比较文件,您可以对输出文件执行另一个 for 循环。使用 basename 命令只获取文件名,然后将它们放在 diff 中,并使用“>”运算符重定向标准输出到“.diff”文件。

然后将每个文件与预期的文件进行比较,例如:

expectedOutput=~/<some path here>
diffFiles=~/<some path>

for oF in ~/project/tests/output/* ; do
file=`basename ${oF}`
diff $oF "${expectedOutput}/${file}" > "${diffFiles}/${file}.diff"
done