shell $ @变量赋值和迭代

时间:2015-11-10 04:16:02

标签: bash shell sh

if(!preg_match("/^[a-zA-Z0-9]+$/", $str) == 1) {
        echo 'Invalid Characters';
    }
    echo 'Valid characters';

这很好用:

function f() {
    for arg; do
        echo "$arg"
    done
}

f 'hello world' 'second arg' '3rdarg'

但是我何时将hello world second arg 3rdarg 分配给某个变量,然后出错:

$@

输出:

function f() {
    local args="$@"
    for arg in "$args"; do
        echo "$arg"
    done
}

当我取消引用hello world second arg 3rdarg 时,每个参数都被分成单个单词:

$args

最后,我想知道是否有一种方法来定义像$ @这样的变量。任何回复都将不胜感激。

1 个答案:

答案 0 :(得分:4)

您需要使用数组:

function f() {
    local args=("$@")             # values in parentheses
    for arg in "${args[@]}"; do   # array expansion syntax
        echo "$arg"
    done
}