【问题标题】:Whats wrong with the function params and the comparison condition?函数参数和比较条件有什么问题?
【发布时间】:2016-07-18 13:49:59
【问题描述】:

我正在弄清楚如何让这个工作.. 我对 Bin Bash 不是很有经验, 但我有这个脚本:

variables.cfg 包含:

pvp="0400 1200 2000"

#!/bin/sh

CONFIG_FILE="/home/nacion/variables.cfg"
source $CONFIG_FILE

#Arreglar tiempo
ATM (){
  if [ $((1+2)) -gt 24 ];
    then
      $a=$1 + $2
      $b=$a-2400
      echo $b
  fi
}

declare -a VcHorarios=($pvp)

for HoraAR in "${VcHorarios[@]}" 
do 

我不知道为什么没有传递参数

  ES=$(ATM $HoraAR 500)
  HorarioSv="&b&lMX $((HoraAR-300)) - AR $HoraAR H - ES $ES H"
done

echo $HorarioSv

结果:

[root@anda ~]# /home/nacion/vcprueba.sh 
&b&lMX 1700 - AR 2000 H - ES H
[root@ns500347 ~]# 

提前感谢您的帮助

【问题讨论】:

  • 3 永远不会大于 24。
  • @choroba 如果它们是字符串...
  • @123: -gt 使用数字比较。
  • $a=$1 + $2$b=$a-2400 不是合法的 shell 语法/命令。
  • set -x 添加到脚本顶部,看看实际运行的是什么。

标签: bash function operators


【解决方案1】:

您可以从$((...)) 中的变量 名称中删除$$1$2 不是变量;它们是位置参数。

if [ $(($1 + $2)) -gt 24 ];

一旦你设法输入if 语句的主体,正确的命令是

a=$(( $1 + $2 ))
b=$(( a - 2400 ))  # or $(( $a - 2400 )), if you prefer

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 2020-01-08
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2010-11-08
    相关资源
    最近更新 更多