【问题标题】:How to compare values from an array in shell script?如何比较shell脚本中数组的值?
【发布时间】:2021-10-12 16:26:21
【问题描述】:

为什么这些行不起作用?是否有可能让它们发挥作用?如果这是一个愚蠢的问题,您能否向我解释一下 shell 如何从数组中读取值是文本还是整数,请不要笑我刚开始学习 :)。

if  [ ${a[1]} -gt ${a[2]} ] ;
for (( b=0; b > ${a[2]}; b++));
#!/bin/bash
read a arr


if [ ${a[0]} -ne 1 ] && [ ${a[0]} -ne 2 ] && [ ${a[0]} -ne 3 ];
 then
 echo "Ne poznam vrednosti prvega parametra"
 echo "Konec skripte"
 else  
  if [ ${a[0]} -eq 1 ];
   then
   echo "Prvi parameter ima vrednost ${a[0]}"
   if  [ ${a[1]} -gt ${a[2]} ] ; 
     then
      echo "Drugi parameter je vecji ali enak tretjemu parametru."
     else
      echo "Drugi parameter ni vecji ali enak tretjemu parametru."
    fi  
  fi
  if [ ${a[0]} -eq 2 ];
    then
      echo "Prvi parametar ima vrednost: 2"
      for (( b=0; b > ${a[2]}; b++));
      do 
       
       echo "WORKS"
       
      done              
  fi    
fi

【问题讨论】:

  • 将您的脚本粘贴到shellcheck.net 以获取验证/建议。
  • 您认为read a arr 应该做什么,尤其是考虑到所有对名为a[] 的数组的引用?
  • 它让我在终端中输入值,例如:1 5 4
  • 当然,但是这些值存储在哪里?我假设您想要的是 read -a arr ... 将这些值 (1 5 4) 存储在名为 arr[] 的数组中,但是您需要修复其余代码你真的想引用一个名为arr[]的数组,而不是引用一个名为a[]的数组;或者,使用read -a a 将值读入名为a[] 的数组中,无需更改对名为a[] 的数组的后续引用
  • 谢谢你为我解决了这个问题,我终于可以完成我的项目了,我希望我不穷,所以我可以付钱给你!您不仅帮助了我,还向我解释了这一点,我非常感激!

标签: arrays bash shell


【解决方案1】:

我认为第一个问题是[ 之后和] 之前缺少空格。

在火循环中,第二个表达式应该是循环测试或条件,它是假的,所以循环不会被执行。也许应该是b <= ${a[2]}

有关示例,请参阅 https://www.cyberciti.biz/faq/bash-for-loop/

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多