在 bash 关联数组键中使用特殊字符

问题描述 投票:0回答:1

我尝试在 bash v4 中创建关联数组。键应该是目录名称,值是 ID。问题是,某些目录包含特殊字符,例如括号,这会导致语法错误。

我的代码是:

for PAGE in ${MOIN_PAGES[@]}
do
    CURRENT=`cat  $MOIN_DIRECTORY/data/pages/$PAGE/current`
    if [[ $CURRENT != cat* ]]
    then
        echo $CURRENT
        MOIN_REVISIONS["$PAGE"]=$CURRENT
    fi
done

Bash 告诉我,错误位于

MOIN_REVISIONS["$PAGE"]=$CURRENT

MOIN_PAGES 包含类似“Abk(c3bc)rzungen”的字符串

有什么想法可以解决这个问题吗?

arrays linux bash console
1个回答
0
投票

在 Bash 中,除非您知道自己在做什么,否则强烈建议始终使用双引号:

for PAGE in "${MOIN_PAGES[@]}"
do
    CURRENT="$(cat "$MOIN_DIRECTORY"/data/pages/"$PAGE"/current)"
    if [[ "$CURRENT" != cat* ]]
    then
        echo "$CURRENT"
        MOIN_REVISIONS["$PAGE"]="$CURRENT"
    fi
done

否则,您的条目将会混乱分词。

© www.soinside.com 2019 - 2024. All rights reserved.