我需要通过 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 从用户那里获取三个参数
可能吗?如何 ?
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
编辑:我的坏 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
即使你不需要in $@
,这也一样:
#!/bin/bash
i=0
for arg; do
my_array[i]="$arg"
echo "${my_array[i]}"
(( i++ ))
done
那是,
如果
in words
不存在,则该for
命令对设置的每个位置参数执行一次命令,就像in $@
已指定一样。
bash 有一个特殊的变量
$@
其中包含它当前执行的脚本的参数。我认为这就是您要寻找的东西:
for arg in $@ ; do
# code
done