Bash Script: как прочитать строку из файла, который был передан в качестве аргумента, и сохранить его в переменной - PullRequest
0 голосов
/ 08 октября 2019

Мне нужно создать программу, которая принимает в качестве аргументов несколько файлов, содержащих строки, подобные этой: num1:num2.

Мне нужно хранить левый столбец чисел в одном массиве и правый столбец итогда сделай с ними что-нибудь. Мне нужна помощь по первой части.

Количество файлов, передаваемых в качестве аргументов, является переменным. Также я не знаю ни названия файлов, ни количества строк. Я просто знаю, что я получу по крайней мере 1 файл с 1 строкой.

Я пытаюсь сделать цикл для каждого файла аргумента, а затем прочитать каждую строку файла, разбить каждую строку с некоторыми строковыми манипуляциями и затем сохранитьрезультаты в 2 массивах. Однако мне не удалось. Я знаю, что у меня есть и другие виды ошибок, но я могу их исправить.

Когда я пытаюсь запустить программу, используя:

sh <my_program_name>.sh <argument1_filename>

Я просто не получаю результатов на терминале, пустоЭкран как будто он вычисляет что-то в бесконечном цикле.

#!/bin/bash

length=0
b=1
c=1
d=0
args=$#
j=0
temp=0
temp2=0
temp3=0
temp4=0

for temp in "$@"
do

while read line
do

stringtmp=line

tmp=`expr index "$stringtmp" :`
let tmp=tmp-1
stringtmp2='expr substr $stringtmp $1 $tmp'
lengh=`expr index "$stringtmp" \n`
let tmp=tmp+2
let lengh=lengh-1
stringtmp3='expr substr $stringtmp $tmp $lengh'
array1[$length]=stringtmp2
array2[$length]=stringtmp3

let length=length+1

done
...
done

1 Ответ

0 голосов
/ 08 октября 2019

Ваш цикл while ожидает ввода от стандартного ввода. Если вы хотите перебрать содержимое temp, вы можете использовать:

while read line; do
...
done<$temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...