bash脚本错误直到[1:找不到命令

时间:2020-08-06 15:35:23

标签: bash shell until-loop

有人可以使用以下代码解决我的头痛问题。我想编写一个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上运行。请帮忙

3 个答案:

答案 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[*]}

感谢您的帮助