0

我需要通过 test.ksh 脚本获取三个参数,如下所示

  ./test.ksh 12 34 AN

例如,是否可以通过计数器设置参数?

for get_arg 1 2 3
do
my_array[get_arg]=$$get_arg 

print ${my_array[get_arg]}
done

在这个例子中,我想通过循环计数器 "$$get_arg" 代替 $1 $2 $3 从用户那里获取三个参数

可能吗?如何 ?

4

4 回答 4

1
my_array=("$@")

for i in 0 1 2
do
    echo "${my_array[$i]}"
done

这会将所有参数分配给 array my_array;然后循环选择前三个参数进行回显。

如果你确定你想要数组中的前三个参数,你可以使用:

my_array=("$1" "$2" "$3")

如果您希望数组中位置 1、2、3 的 3 个参数(而不是 0、1、2),则使用:

# One or the other but not both of the two assignments
my_array=("dummy" "$@")
my_array=("dummy" "$1" "$2" "$3")

for i in 1 2 3
do
    echo "${my_array[$i]}"
done
于 2013-08-07T07:30:46.510 回答
0

编辑:我的坏 ksh:

for arg;do
   print $arg
done

原帖:使用shift遍历shell脚本参数:

# cat test.sh 
#!/bin/bash

while [ "$1" != "" ]; do
    echo $1
    shift
done

测试运行:

# ./test.sh arg1 monkey arg3
arg1
monkey
arg3

资源

于 2013-08-07T07:08:32.653 回答
0

即使你不需要in $@,这也一样:

#!/bin/bash

i=0
for arg; do
    my_array[i]="$arg"
    echo "${my_array[i]}"
    (( i++ ))
done

那是,

如果in words不存在,则该for命令对设置的每个位置参数执行一次命令,就像in $@已指定一样。

于 2013-08-07T07:12:09.260 回答
0

bash 有一个特殊的变量

$@

其中包含它当前执行的脚本的参数。我认为这就是您要寻找的东西:

for arg in $@ ; do 
    # code
done
于 2013-08-07T07:05:39.107 回答