Я пытаюсь написать простую функцию bash, которая принимает в качестве аргументов несколько файлов и / или каталогов. Должно:
- Полностью уточните имена файлов.
- Сортировать их.
- Удалить дубликаты.
- Распечатайте все, что на самом деле существует.
- Вернуть количество несуществующих файлов.
У меня есть скрипт, который почти делает то, что я хочу, но падает на сортировку. Возвращаемое значение скрипта в его текущем состоянии является правильным, но вывод не является (несортированный и дублирует). Если я раскомментирую | sort -u
оператор, как указано, вывод верен, но возвращаемое значение всегда 0
.
NB. Более простые решения для решения проблемы приветствуются, но вопрос в том, почему это происходит в моем коде. То есть почему добавление канала, по-видимому, останавливает сценарий, увеличивающий переменную r
?
Вот сценарий:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
доfor arg
. "Если 'в словах ...;' нет, тогда предполагается "в" $ @ "." - помощь для