【问题标题】:Save each line of echo output as variable BASH将每一行回显输出保存为变量 BASH
【发布时间】:2017-02-20 16:30:01
【问题描述】:

我正在创建一个简单的脚本,我可以在其中将每一行保存为变量以供以后使用。然而事情并不顺利。谁能帮帮我。

read -p  "Enter the number of user and press [ENTER]:" num
   for ((i=1; i<=$num; i++)); do
           var$i="|-> Line $i"
           echo "var$i"

   done

我正在尝试获取如下所示的输出

|-> Line 1
|-> Line 2
|-> Line 3
|-> Line 4

【问题讨论】:

    标签: bash for-loop echo


    【解决方案1】:

    你离不远了。只需使用一个数组:

    read -p  "Enter the number of user and press [ENTER]:" num
    for ((i=0; i<$num; i++)); do
        var[$i]="|-> Line $((i+1))"
        echo "${var[i]}"
    done
    
    for line in "${var[@]}"
    do
        echo "Saved line: $line"
    done
    

    其中后者给出了稍后如何检索它的示例。此外,数组是零索引的,我已经相应地对其进行了调整。

    【讨论】:

    • 这非常有效。非常感谢 !那么你所做的就是将它们放入一个数组中?
    • 是的,你的回答做得更好。
    • 是的,这会将它们放入一个数组中。它还依赖于未定义的变量(当用作数组时)与空数组的行为相同的事实。但您也可以在上面说 var=() 更明确,并清除之前可能在 var 中定义的任何内容。
    【解决方案2】:

    这能满足您的要求吗?

    read -p  "Enter the number of user and press [ENTER]:" num
       for ((i=1; i<=$num; i++)); do
           var_j="|-> Line $i"
           echo $var_j
    
       done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2021-11-18
      • 2013-10-12
      • 2021-11-18
      • 2013-09-20
      相关资源
      最近更新 更多