【问题标题】:POSIX SH build loop variable with elements containing spacesPOSIX SH 使用包含空格的元素构建循环变量
【发布时间】:2011-02-25 14:05:10
【问题描述】:

这是我需要的代码:

#!/bin/sh

x1="a1 a2"
x2="b1 b2"

list=SOMETHING

for x in "$list"
do
    echo $x
done

还有我想要的输出:

a1 a2
b1 b2

问题是:SOMETHING 应该是什么?我希望$list 的行为与$@ 一样。

注意:我不能在整个循环中使用$IFSeval

【问题讨论】:

标签: bash sh


【解决方案1】:

这可能是你能得到的最接近的:

#!/bin/sh
x1="a1 a2"
x2="b1 b2"

set -- "$x1" "$x2"

for x in "$@"
do
    # echo $x
    echo "[${x}]"    # proves that the lines are being printed separately
done

输出:

[a1 a2]
[b1 b2]

在 Bash 中你可以使用数组:

#!/bin/bash
x1="a1 a2"
x2="b1 b2"

list=("$x1" "$x2")

for x in "${list[@]}"
do
    # echo $x
    echo "[${x}]"    # proves that the lines are being printed separately
done

相同的输出。

【讨论】:

    【解决方案2】:

    在标准 POSIX shell 中是不可能的。

    【讨论】:

    • 正如 $@ 做我想做的事,我希望它是可能的
    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2016-10-31
    • 2015-08-09
    • 2020-11-28
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多