【问题标题】:How to assign multiple string values into a variable in shell scripts?如何将多个字符串值分配给 shell 脚本中的变量?
【发布时间】:2019-01-11 00:36:12
【问题描述】:

我正在尝试循环更改数字的文本文件,并将孔字符串存储到 shell 变量中,以便稍后打印

我尝试使用“>>”将字符串回显为整数(循环中的数字)

#!/bin/bash
a=0
while [ "$a" -lt 4 ]
do
    echo '<div name="block-'${a}'">' >> $sub_main
    ((a++))
done
echo "done"
echo $sub_main

脚本的输出应该是:

<div name="block-0">
<div name="block-1">
<div name="block-2">
<div name="block-3">

【问题讨论】:

  • 您是否关心将其放入变量中?你可以只删除&gt;&gt; $sub_main 和echo $sub_main,然后你的脚本就会有预期的输出

标签: shell command echo


【解决方案1】:

&gt;&gt; 将输出附加到文件中。如果你想附加到一个变量,你可以使用一个赋值,将要附加到的变量放在正确值的开头。

a=0;
sub_main="";
while [ "${a}" -lt 4 ]; do
  sub_main="${sub_main}\n<div name=\"block-${a}\">";
  ((a++));
done;
echo "done";
echo "${sub_main}";

或者,如果要附加到文件,您可以简单地使用cat 而不是echo 来输出文件的内容。

即替换

echo $sub_main

与:

cat "${sub_main}";

【讨论】:

    【解决方案2】:

    使用命令替换将输出捕获到变量中:

    #!/bin/bash
    sub_main=$(
        for (( a = 0; a < 4; a++ )); do
            printf '<div name="block-%d">\n' "$a"
        done
    )
    # ... do other stuff ...
    echo "$sub_main"
    

    或者你可能想使用一个函数来推迟执行:

    #!/bin/bash
    sub_main() {
        for (( a = 0; a < 4; a++ )); do
            printf '<div name="block-%d">\n' "$a"
        done
    }
    # ... do other stuff ...
    sub_main
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2011-02-25
      相关资源
      最近更新 更多