从单独的文件中读取屏幕和时间的变量

时间:2018-01-15 20:11:17

标签: bash

我想从屏幕上读取变量,而不是在文件中输入。我尝试了以下方法:

#!/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

1 个答案:

答案 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使用。