在bash脚本中带有空格的名称数组

时间:2014-02-19 11:46:14

标签: linux bash

请找到我的脚本和输出

#!/bin/bash
verify=("Tom Dick Harry" "Ricky" "Deep Rising")

function verifyServices()
{
        param=("${!1}")
        for i in ${param[@]}
        do
                echo $i
        done
}

verifyServices verify[@]

输出: -

  

汤姆

     

迪克

     

哈利

     瑞奇

     

深度

     

瑞星

预期产出: -

  汤姆迪克哈利

     

瑞奇

     

Deep Rising

为什么呢?我的数组声明错了吗?

1 个答案:

答案 0 :(得分:4)

在函数内使用引号:

function verifyServices() {
    param=("${!1}")
    for i in "${param[@]}"; do
       echo "$i"
    done
}

verifyServices verify[@]
Tom Dick Harry
Ricky
Deep Rising

代码中的主要问题是这一行:

for i in ${param[@]}

由于循环空格将它们视为单独的参数。

应该是:

for i in "${param[@]}"