LinuxForum.Fans
Тема

Про конвейер

Автор: 1000Mhz 3 сообщений 1070 просмотров
15.06.2017 20:59 #423664

Задачка такова: вывод команды - список файлов, вперемешку текстовых и бинарников, нужно вывести первый не-бинарный файл [и передать его cat, но это к делу не относится].
Не охота городить никаких циклов, можно ли сделать это проще, в одном конвейере?

(Для проверки типа файла мне вполне достаточно вывода file).

15.06.2017 21:40 · отредактировано #423665

Туплю я чот нынче *WALL*
ОТВЕТ таков: написать функцию, которая делает нужные вам проверки, и засунуть ее в конвейер, все!

17.06.2017 09:21 #423685
1000Mhz написал:
Туплю я чот нынче *WALL*
ОТВЕТ таков: написать функцию, которая делает нужные вам проверки, и засунуть ее в конвейер, все!

Всё же без циклов в функции это решить нереально.
[console]
#!/bin/bash

func()
{
a=0
while read n; do
arr[$a]=$n
let a+=1
done

b=1
for ((i=1;i<=$a;i++)); do
if file ${arr[$i]}|grep text >/dev/null
then
tmp=${arr[$i]}
arr[$i]=${arr[1]}
arr[1]=$tmp #поменяли местами
break
fi
done

for ((i=1;i<$a;i++)); do
echo ${arr[$i]}
done
}

ls|func
ls /bin|func
[/console]
Но зато я сделал то что работает, можете проверять. Надеюсь правильно

Войдите или зарегистрируйтесь, чтобы ответить.