Я новичок в программировании bash и борюсь с этой одной частью моей программы. Я знаю, как использовать позиционные параметры, чтобы ссылаться на определенные элементы командной строки, однако я могу заставить это работать, только если файл указан. Как я могу использовать позиционные параметры со стандартным вводом, как так:Как использовать позиционные параметры со стандартным входом в Bash
cat test_file | stats -r
В этом случае, я могу сослаться на статистику с «$ 0» и -r с «$ 1», но как я могу сослаться на кот test_file части? Для контекста Stats - это моя программа, которая находит среднюю и медианную числа в тестовом файле. «-r» указывает на то, что программа должна читать каждую строку программы Когда командная строка записывается следующим образом:.
stats -r test_file
Я использую этот код для обозначения -r
if [[ "${1:0:2}" == '-r' ]]
do stuff
_but Как я могу обратиться к части 'cat test_file'? _ Короткий ответ: вы не можете! –
Если нет позиционного аргумента (который вы можете сказать, посмотрев на '$ #'), вы должны просто прочитать его из stdin. Это будет работать с трубами, а также в случае, когда пользователь хочет ввести непосредственно в программу. – rici
Как я мог читать со стандартного ввода, если мне нужно было использовать его в качестве аргумента для функции? Поэтому с позиционными параметрами я вызываю функцию следующим образом: rows_stats $ 2, где $ 2 относится к имени файла. Как я могу сделать то же самое с помощью стандартного ввода? – user2466886