У меня есть файл, я хочу написать Баш оболочку, чтобы сделать некоторые операции, но, во-первых, мне нужно сортировать их и получить первые 10 строк входной_файлКак использовать конвейер в оболочке bash?
мой код:
#!/bin/bash
pipe= "${1:-/dev/stdin}" > sort -k2 #----line 4
i=0
while [.....]&&[ $i -lt 10 ] do
....
....
i=$((i+1))
done < "$pipe" #----line 15
Выполнить команда:
cat inputfile | ./e4.sh
но получить разрешение отказано:
./e4.sh: line 4: /dev/stdin: Permission denied
./e4.sh: line 15: : No such file or directory
с моего компьютера я могу увидеть файл/Dev/стандартный ввод
[email protected]:/dev# ls
block kmsg null pts shm stdin tty tty1 urandom
fd lxss ptmx random stderr stdout tty0 tty2 zero
Как сделать это правильно. Я имею в виду сортировку и получение 10 лучших строк.
Пожалуйста, посмотрите: http://www.shellcheck.net/ – Cyrus
Подсказка '! # 'Должна быть' #! '(Это' 'фунт bang" 'NOT' "bang pound" '. Нет' '' 'разрешено окружать оператор присваивания '' =' '. Между' ['и выражением (например,' [выражение] ') требуется A' '' '. После присвоения вы ссылаетесь на переменную, предшествуя ее имени, '' $ ''(например,' $ i'). 'less than' conditional -' -lt' not '' lt''. Это все, прежде чем вы столкнетесь с проблемой с перенаправлением назначения' pipe' to 'sort '. После [shellcheck.net] (http://www.shellcheck.net/) отредактируйте свой вопрос, и сообщество может помочь. –
спасибо уже изменилось – user504909