如何将文件中的每一行读取到最后一个字段的一个变量中,并将其他字段读取到另一个变量中?

如何将文件中的每一行读取到最后一个字段的一个变量中,并将其他字段读取到另一个变量中?

如何将文件中的一行读入两个变量:一个变量用于最后一个字段,另一个变量用于其他字段?

例如,我有一个文件:

hello world! 10s
It is a good day. 4m
...

我想将每一行读入两个变量:一个变量包含该行末尾的时间间隔,另一个变量包含其之前的字段。我想知道该怎么做;据我所知:

while read line 
do
    ...  # split $line into $message and $interval
    myprogram "$message" "$interval"
done < "$inputfile" 

答案1

只要间隔不包含空格,这应该有效:

#!/bin/bash

input=/path/to/input

while read -r line; do
    message=${line% *}
    interval=${line##* }
    echo "$message"
    sleep "$interval"
done < "$input"

${line% *} 将删除最后一个空格字符之后的所有内容

${line##* }将删除最后一个空格字符之前的所有内容

相关内容