Então eu me deparei com um pouco de barreira, eu tenho uma opção no meu script que chama uma função que me permite especificar um arquivo/diretório e então eu quero analisar essa saída em uma ferramenta de menu (usando dmenu neste caso) para selecionar qual arquivo é o que eu quero especificamente e continuar trabalhando com essa seleção como uma variável no mesmo script. Isso funciona bem se for apenas um arquivo ou diretório, mas eu quero ser capaz de usar a opção várias vezes e então analisar toda essa saída de uma vez para dmenu. Aqui está um trecho
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
E como eu disse, isso funciona se eu fizer:
myscript -f file
ou
myscript -f directory
mas eu esperava poder fazer isso também:
myscript -f file1 -f file2
O problema é que, como a função é chamada consecutivamente, não consigo analisar a saída no dmenu dessa forma, porque ele não invoca o dmenu com as opções file1 e file2, mas primeiro com file1 e depois com file2. Espero que isso faça sentido.
Pode haver alguma solução realmente simples que eu esteja esquecendo, pensei em simplesmente escrever a saída em um arquivo e então analisar isso, o que pode funcionar, mas gostaria de evitar o pipe para arquivos, se possível. Também estou tentando mantê-lo compatível com POSIX, e apreciaria respostas que sigam isso.