相关疑难解决方法(0)

检查Bash数组是否包含值

在Bash中,测试数组是否包含某个值的最简单方法是什么?

编辑:在答案和评论的帮助下,经过一些测试后,我想出了这个:

function contains() {
    local n=$#
    local value=${!n}
    for ((i=1;i < $#;i++)) {
        if [ "${!i}" == "${value}" ]; then
            echo "y"
            return 0
        fi
    }
    echo "n"
    return 1
}

A=("one" "two" "three four")
if [ $(contains "${A[@]}" "one") == "y" ]; then
    echo "contains one"
fi
if [ $(contains "${A[@]}" "three") == "y" ]; then
    echo "contains three"
fi
Run Code Online (Sandbox Code Playgroud)

我不确定它是否是最佳解决方案,但似乎有效.

arrays bash

387
推荐指数
18
解决办法
47万
查看次数

POSIX SH 构建循环变量,其元素包含空格

这是我需要的代码:

#!/bin/sh

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

list=SOMETHING

for x in "$list"
do
    echo $x
done
Run Code Online (Sandbox Code Playgroud)

以及我想要的输出:

a1 a2
b1 b2
Run Code Online (Sandbox Code Playgroud)

问题是:应该SOMETHING是什么?我想像现在$list一样行事$@

注意:我不能使用$IFS也不能eval整个循环。

bash sh

5
推荐指数
1
解决办法
1861
查看次数

标签 统计

bash ×2

arrays ×1

sh ×1