Задачка такова: вывод команды - список файлов, вперемешку текстовых и бинарников, нужно вывести первый не-бинарный файл [и передать его cat, но это к делу не относится].
Не охота городить никаких циклов, можно ли сделать это проще, в одном конвейере?
(Для проверки типа файла мне вполне достаточно вывода file).
LinuxForum.Fans
Про конвейер
Автор: 1000Mhz
3 сообщений
1070 просмотров
Туплю я чот нынче *WALL*
ОТВЕТ таков: написать функцию, которая делает нужные вам проверки, и засунуть ее в конвейер, все!
Туплю я чот нынче *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]
Но зато я сделал то что работает, можете проверять. Надеюсь правильно
Войдите или зарегистрируйтесь, чтобы ответить.