读取
我需要分割给定的日期格式(hh:mm:ss),如:10:30:50在如下变量中:hour=10;在bash脚本中,分钟=30秒=50。
我得到一个变量的时间,例如:time="10:30:50"我只能通过下面的表达式得到秒数:
seconds=
echo $time | grep -oE "[^:]+$"
能帮我弄到分钟和小时吗?
使用read
。它是shell内置的命令,因此比grep
, sed
和其他外部命令更有效。
time="10:30:50"
IFS=: read hr min sec <<< "$time"
输出:$ echo "$hr"
10
$ echo "$min"
30
$ echo "$sec"
50
见下:
kent$ time="10:30:50"
kent$ h=$(awk -F: '$0=$1' <<<"$time")
kent$ m=$(awk -F: '$0=$2' <<<"$time")
kent$ s=$(awk -F: '$0=$3' <<<"$time")
kent$ echo $h,$m,$s
10,30,50
与sed
:
echo '10:30:50' | sed 's/([0-9]+):([0-9]+):([0-9]+)/hours=1 minutes=2 seconds=3/'
使它成为一个函数:
function stringToTime() {
eval $( echo "$1" | sed 's/([0-9]+):([0-9]+):([0-9]+)/hours=1 minutes=2 seconds=3/' )
}
现在你可以叫它:
stringToTime 10:30:50
echo $hours hours, $minutes minutes and $seconds seconds
sed、grep、awk是外部命令,尝试使用shell内置命令提取所需信息
D=12:10:12
IFS=:
read H M S <<< $D
注意:& lt; & lt; & lt;表示从变量
@fedorqui,@kent,
$ echo ${time:0:2}
10
$ echo ${time:3:2}
30
$ echo ${time:6:2}
50