Вы, кажется, пришли довольно близко к тому, что должно работать. Я бы изменил его к:
while IFS= read -r l; do printf "%s\n" "$l" | ./c_program; done < test_numbers.txt
чтение l
, а не , чтение $ l
. READ -R
для чтения «сырых» линий (не интерпретируйте обратную косание). IFS =
для захвата ведущих и задних пространств. printf "$ L"
; Это сломается, если содержит $ l
% %
. Это, кажется, не подходит для XARGS
,
Но я смог придумать следующее:
tr '\n' '\0' < test_numbers.txt | xargs -0 -L1 -I{} sh -c 'printf "%s\n" "$1" | ./c_program' _ {}
преобразует новые слова в файл на NULLS; -0
рассказывает XARGS
, чтобы ожидать, что.
READ -R
; I.e., не интерпретируйте обратные капли.
Там может быть лучший способ. -L1
рассказывает xargs xargs
, чтобы принять программу один раз для каждого (каждый входную строку ).
Xargs
может обрабатывать только простые команды,
Используйте SH -C '...'
для выполнения трубопровода. Только ArchLinux поддерживает IA-32
и x86_64
. ArchLinuxARM (сокращенно ALARM), который является отдельным производным дистрибутивом от ArchLinux, официально не поддерживает вашу машину.
Однако он может относиться к категории ALARM , поддерживаемой сообществом .
Итак, можете ли вы установить Arch на любую машину на базе ARM? Нет. Можно ли установить СИГНАЛИЗАЦИЯ на вашу машину? возможно (но не будет официально поддерживаться).