有人可以使用以下代码解决我的头痛问题。我想编写一个bash脚本,它将根据用户输入的信息和显示表创建一个包含时间间隔的表。这是另一个程序的一部分,但是我与该until command
堆栈在一起,该堆栈应该易于使用。抱歉!我用法语编码,但想法如我所解释
#!/bin/bash
read -p "entrez l'heure de depart(exple: hh:mn:06 or hh:mn:36):" beg_time
read -p "entrez l'intervalle de temps en minute(exple: 10):" Inter
read -p "entrez le nombre d'occurence(exple: 4):" Nbre
let "i = 1"
let "Nb = $Nbre"
tab=("$beg_time")
until [ "$i" -eq "$Nb" ]
do
tab["$i"]=`date -j -v '+"$Inter"M' -f "%H:%M:%S" "$beg_time" "+%T"`
let "i += 1"
done
echo ${tab[*]}
但是我得到这个错误
line 8: until [ 1: command not found
我需要指出的是,我使用的是MacOS,因此date命令可能无法在其他Linux OS上运行。请帮忙
答案 0 :(得分:0)
修复变量分配:
i=1
Nb="${Nbre}"
let "i += 1"
答案 1 :(得分:0)
在我的Mac上启动此程序,我没有相同的错误:
+"$Inter"M: Cannot apply date adjustment
我认为您不需要在直到语句中加引号,这是两个数字。 您正在使用bash或zsh吗?
答案 2 :(得分:0)
我发现until
有问题。由于某些原因,我需要在]
之后添加一个空格。然后我还需要对脚本进行一些小的更改。
最终更新如下。
#!/bin/sh
read -p "entrez l'heure de depart(exple: hh:mn:06 or hh:mn:36):" beg_time
read -p "entrez l'intervalle de temps en minute(exple: 10):" Inter
read -p "entrez le nombre d'occurence(exple: 4):" Nbre
let "i = 1"
let "Nb = $Nbre"
tab=("$beg_time")
until [ $Nb -eq $i ]
do
tab["$i"]=`date -j -v ""+$Inter"M" -f "%H:%M:%S" "$beg_time" "+%T"`
beg_time=${tab["$i"]}
let "i += 1"
done
echo ${tab[*]}
感谢您的帮助