如何在bash中的"for"语句中传递字符串并将其作为单独的参数发送到for内的函数?

fzk*_*zkl 1 string variables parameters bash function

我希望能够从for语句的内部向fnToDisplay()函数发送解析.for语句中的列表应该是一次一个分辨率.

关键问题是,我无法修改fnToDIsplay()但仍应该能够将解析作为单独的参数捕获到此函数中.有没有办法通过以特定方式格式化main语句或变量assignemnts来实现这一点?

下面的代码不能完成预期的工作,但应该知道我在寻找什么.

#!/bin/bash

fnToDisplay()
{
# $1 should display 1280, 1920 and 640 for each call from for loop
echo $1 
# $2 should display 1024, 1080 and 480 for each call from for loop
echo $2
}

res1="1280 1024"
res2="1920 1080"
res3="640 480"
for resolution in $res1 $res2 $res3
do
 fnToDisplay $resolution
done

exit
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.谢谢

mar*_*rco 5

在声明for循环时,只需用双引号保护$ res_i:

res1="1280 1024"
res2="1920 1080"
res3="640 480"
for resolution in "$res1" "$res2" "$res3"
do
    fnToDisplay $resolution
done
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在bash中你可以使用一个数组:

resolutions=("1280 1024" "1920 1080" "640 480")
for resolution in "${resolutions[@]}"; do
    fnToDisplay $resolution
done
Run Code Online (Sandbox Code Playgroud)