【问题标题】:variable inside for loop disappears in shell scriptfor循环内的变量在shell脚本中消失
【发布时间】:2018-01-07 20:00:10
【问题描述】:

我在 for 循环内的 if 循环中使用结果变量。当我在文件末尾打印结果时,我得到“SERVER_STATUS:error”,但我想得到“SERVER_STATUS:success”。我应该改变什么以获得尊重的输出?

result="SERVER_STATUS:error"
  for i in $(seq 1 10)
  do
   if [ "$i" = 4 ]; then
    result="SERVER_STATUS:success"
    echo $result
    break
   fi
  done


echo "$result"

注意:我使用的是 shell 脚本。

更新1:-

如果我将 export 与变量一起使用,它可以按我的意愿工作。有什么问题吗?

 result="SERVER_STATUS:error"
      for i in $(seq 1 10)
      do
       if [ "$i" = 4 ]; then
        export result="SERVER_STATUS:success"
        echo $result
        break
       fi
      done


    echo "$result"

【问题讨论】:

  • 无法复制。
  • @IgnacioVazquez-Abrams 请参考我的更新并告诉您的建议
  • 两者都按预期返回 SERVER_STATUS:success 两次。
  • 您使用的是什么外壳?尝试将 #!/bin/bash 作为脚本的第一行。
  • @karan 你用什么shell,你的第一个脚本适合我。我得到你想要的结果。我使用 bash shell。

标签: shell loops variables unix


【解决方案1】:

换行试试:

if [ "$i" = 4 ]; then

with
if [ "$i" = "4" ]; then

or
if [ $i -eq 4 ]; then

【讨论】:

    猜你喜欢
    • 2022-05-17
    • 2012-06-28
    • 2022-01-26
    • 2020-12-21
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多