我想从屏幕上读取变量,而不是在文件中输入。我尝试了以下方法:
#!/bin/bash
STARTED_TIME=10:46:20
RECORDED_TIME=(
11:03:00
11:24:00
11:27:00
11:32:00
)
SEC1=$(date +%s -d "${STARTED_TIME}")
for d in "${RECORDED_TIME[@]}"
do
SEC2=$(date +%s -d "$d")
DIFFSEC=$(( SEC2 - SEC1 ))
echo "$DIFFSEC"
done
前一个工作正常。现在有两件事正在寻找。首先是从屏幕命令读取SATRED_TIME,另一个是从另一个单独的文件中读取RECORDED_TIME。我将不胜感激任何帮助。
#!/bin/bash
echo "What is the started time?"
read time
STARTED_TIME=$time
RECORDED_TIME=(
recorded_time.txt
)
SEC1=$(date +%s -d "${STARTED_TIME}")
for d in "${RECORDED_TIME[@]}"
do
SEC2=$(date +%s -d "$d")
DIFFSEC=$(( SEC2 - SEC1 ))
echo "$DIFFSEC"
done
cat Recorded_time.txt
11:03:00
11:24:00
11:27:00
11:32:00
答案 0 :(得分:0)
你想写这样的东西:
$ cat time.sh
#!/bin/bash
read -p "What is the started time? " started_time
mapfile -t recorded_time < Recorded_time.txt
sec1=$(date +%s -d "${started_time}") || exit 2
for rec_time in "${recorded_time[@]}"; do
sec2=$(date +%s -d "$rec_time")
diffsec=$(( sec2 - sec1 ))
echo "$diffsec"
done
然后,你可以做
$ bash time.sh
What is the started time? 11:00:00
180
1440
1620
1920
我使用read -p
指定读取命令的提示符,使用mapfile
命令将文件行读取到shell数组中。
此外,避免使用ALL_CAPS_VARNAMES也是一种好习惯:这些只能由shell使用。