Я не уверен, что вы взялись за сценарии оболочки Unix, но вот
рабочий пример для bash:
#!/bin/bash
Exclude=("a" "b" "c")
Listing=(`ls -1Q`)
Files=( $(comm -23 <( printf "%s\n" "${Listing[@]}" ) <( printf "%s\n" "${Exclude[@]}"
) ) )
echo ${Files[@]}
Обратите внимание, что каждое имя файла в Exclude заключено в двойные кавычки и добавлено
скобки вокруг них. Замените echo
на someprogram
, измените команду ls
в каталог, который вы хотите изучить, и он должен работать.
Ключом здесь является программа comm
.