How can I read a line from a file into two variables: one variable for the last field, and the the other variable for the other fields?
For example, I have a file:
hello world! 10s
It is a good day. 4m
...
I would like to read each line into two variables: one variable contains the time interval at the end of the line, and the other variable contains the fields before it. I was wondering how to do it; this is as far as I have gotten:
while read line
do
... # split $line into $message and $interval
myprogram "$message" "$interval"
done < "$inputfile"
1 Answer 1
As long as the interval contains no whitespace this should work:
#!/bin/bash
input=/path/to/input
while read -r line; do
message=${line% *}
interval=${line##* }
echo "$message"
sleep "$interval"
done < "$input"
${line% *}
Will strip everything after the last space character
${line##* }
Will strip everything before the last space character
sleep
. Ifsleep
accepts an argument with a space within it, then yes; otherwise, no.