#linux #bash #command #exe
#linux #bash #команда #exe
Вопрос:
Я пытаюсь написать базовую однострочную команду Linux Bash, которая выдает все числа от 1 до 1000 в качестве входных данных для exe-программы.
исполняемая программа выглядит следующим образом:
please insert 1: 1(wanted input)
please insert 2: 2(wanted input)
.
.
.
.
please insert 1000: 1000(wanted input)
success!
итак, я попытался написать эту команду Linux bash:
for((i=1;i<=1000;i =1)); do echo "$i"|./the_exe_file; done
но проблема в том, что моя команда ОТКРЫВАЕТ exe-файл на каждой итерации for … что означает, что только первый ввод (1) правильный.
И, по какой-то причине, входные данные, которые передаются в exe-файл, кажутся не очень хорошими.
что я могу сделать? В чем моя ошибка?
Заранее спасибо.
Ответ №1:
Вы просили открывать exe-файл на каждой итерации цикла. Если вам нужно открыть ее только один раз, выньте ее из цикла:
for((i=1;i<=1000;i =1)); do echo "$i"; done | ./the_exe_file
Комментарии:
1. Если это сработало и решило вашу проблему, было бы хорошо, если бы вы отметили ответ как принятый 🙂
Ответ №2:
Аналогичным образом, вам может показаться более удобным использовать инструмент, предназначенный для этого.
seq 1 1000 | ./the_exe_file
Комментарии:
1. Строго говоря,
seq
может не быть установлена на текущем компьютере, в то время какbash
гарантированно будет доступна на компьютере, на котором выполняетсяbash
скрипт.2. Верно. Если она есть, я бы ее использовал. Если нет, я бы использовал цикл, а не утруждал себя его установкой. 🙂
Ответ №3:
Попробуйте
printf '%sn' {1..1000} | ./the_exe_file
Ответ №4:
В bash:
$ for f in {1..1000}; do echo $f; done
для тестирования:
$ for f in {1..1000}; do echo $f; done | uniq | wc -l
1000