所以我遇到了一点障碍,我的脚本中有一个选项,它调用一个函数,允许我指定一个文件/目录,然后我想将该输出解析为菜单工具(在本例中使用 dmenu)以选择哪个文件是我特别想要的,并继续在同一脚本中将该选择作为变量使用。如果只有一个文件或目录,这种方法可以正常工作,但我希望能够多次使用该选项,然后一次性将所有输出解析为 dmenu。这是一个片段
fileSelection () {
if [ -d "${OPTARG}" ]; then find "${OPTARG}" -type f; fi;
if [ -f "${OPTARG}" ]; then printf '%s\n' "${OPTARG}"; fi;
}
while getopts "f:" option; do
case "${option}" in
f) file="$(fileSelection|dmenu)";;
esac
done
就像我说的,如果我这样做,这会有效:
myscript -f file
或者
myscript -f directory
但我希望也能做到这一点:
myscript -f file1 -f file2
问题是,由于该函数是连续调用的,我无法像那样将输出解析到 dmenu,因为它不使用选项 file1 和 file2 调用 dmenu,而是先使用 file1,然后使用 file2,我希望这有意义。
我可能遗漏了一些非常简单的解决方案,我曾考虑过将输出简单地写入文件,然后解析可能有效的文件,但如果可能的话,我想避免通过管道传输到文件。我也试图使其符合 POSIX 标准,并希望得到后续的答案。