我将数组传递给函数并尝试打印数组的每个元素。
下面是带有数组参数引号的代码段:
#!/bin/bash
print_array ()
{
array=$@
for i in "${array[@]}" #with quotes
do
echo $i
done
}
ar=("1. a" "2. b" "3. c")
print_array ${ar[@]}
当我执行上面的脚本时,输出是
1. a 2. b 3. c
以下是数组参数周围没有引号的代码段:
#!/bin/bash
print_array ()
{
array=$@
for i in ${array[@]} #without quotes
do
echo $i
done
}
ar=("1. a" "2. b" "3. c")
print_array ${ar[@]}
当我执行上面的脚本时,输出是
1.
a
2.
b
3.
c
输出根据数组参数的引号而变化。 我对显示的输出感到困惑。请帮我解决一下。
预期输出应为:
1. a
2. b
3. c
答案 0 :(得分:2)
#!/bin/bash
print_array ()
{
for i;
do
printf "%s\n" "$i"
done
}
ar=("1. a" "2. b" "3. c")
print_array "${ar[@]}" # with quotes
如果要表达,可以写for i in "$@"
你也可以写:
#!/bin/bash
print_array ()
{
array=("$@")
for i in "${array[@]}"; do
printf "%s\n" "$i"
done
}
ar=("1. a" "2. b" "3. c")
print_array "${ar[@]}" # with quotes
答案 1 :(得分:0)
#!/bin/bash
print_array ()
{
array=("$@")
for i in "${array[@]}"
do
echo "$i"
done
}
ar=("1. a" "2. b" "3. c")
print_array "${ar[@]}"
结果:
1. a
2. b
3. c
在赋值期间使用=()将变量保存为数组。