Моя проблема заключалась в том, что я не понимал, что awk также использует пробел в качестве разделителя, а не только табуляцию. После добавления -F'\t'
все работает. Сравнение чисел было в порядке.
Это очень необычно для программ Unix принимать параметры командной строки на стандартный ввод.
На самом деле это привело бы к изменению поведения, потому что в мире Unix расширение имени файла («подстановка» )выполняется вызывающей оболочкой, а не приложением.
напр. если вы выполните ls *.c
, то оболочка расширяет *.c
в file1.c
file2.c
, и поэтому на самом деле выполняется ls file1.c file2.c
.
Если бы у вас были значения на стандартном вводе, тогда программа отвечала бы за расширение.
Итак... это не только не распространено, но и вообще не очень хорошая идея.
Программы нередко запрашивают отсутствующие данные
напр.
#!/bin/bash
filename=$1
if [ -z "$filename" ]
then
read -p Filename: filename
fi
Но это не то же самое, что использование параметров командной строки на стандартном вводе.
Команды этого не делают, потому что многие обычно получают данные из стандартного ввода. Если бы стандартный ввод был смесью параметров и данных, все было бы сложно (и опасно ).
tl;dr Это очень похоже на желание использовать ls
в сценариях(1 , 2 ), цитирование только при необходимости или пересечение потоков (что почти буквально то, что это делает, используя стандартный ввод для двух полностью ортогональных вещей ). Это плохая идея.
При таком подходе возникает несколько проблем:
-l fetch.png
как один параметр ), вы придется очень долго объяснять разработчикам, почему ни один из -l "$path"
, -l ~/Downloads
и -l 'my files'
не делает того, что они ожидают.