【问题标题】:How to display only once echo command in a Bash loop如何在 Bash 循环中只显示一次回显命令
【发布时间】:2021-02-12 20:41:04
【问题描述】:

我的问题很简单。我有:

a=$(echo "lol")

for i in {1..3}; 
do 
echo $a && echo $i ; 
done

我明白了:

lol
1
lol
2
lol
3

我只想在输出的开头打印一次变量a,以获得:

lol
1
2
3

有什么想法吗?

【问题讨论】:

  • 在循环之前移动echo $a
  • 我猜你已经做了一个简化的例子,否则为什么不写a=lol
  • 另外请记住,也许您可​​以只写 printf '%d\n' {1..3} 而不是循环。
  • 也许您可以更新您的问题,向我们展示您正在尝试做的更具代表性的示例?还是真的只是将echo 移出循环的情况?

标签: bash loops echo


【解决方案1】:

你根本不需要循环

a=$(echo "lol") # Not sure why poster wrote this rater than a=lol

printf %s\\n "$a" {1..3}

【讨论】:

    【解决方案2】:

    我建议:

    #!/bin/bash
    
    a="lol"$'\n'      # append newline
    
    for i in {1..3}
    do
      echo -e "$a$i"  # -e: enable interpretation of escape sequences
      unset a
    done
    

    或者替换你的问题

    echo $a && echo $i ;
    

    [[ "$i" == "1" ]] && echo "$a"
    echo "$i"
    

    请参阅:help echohelp unset

    【讨论】:

      【解决方案3】:

      将 echo 移出 for 循环

      a=$(echo "lol")
      
      echo $a
      for i in {1..3}; do 
          echo $i; 
      done
      

      或:

      echo "lol"
      for i in {1..3}; do 
          echo $i; 
      done
      

      test run in shell

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 2020-03-05
        • 1970-01-01
        • 2014-11-28
        相关资源
        最近更新 更多