我需要通过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
有可能吗?怎么样?
答案 0 :(得分:1)
my_array=("$@")
for i in 0 1 2
do
echo "${my_array[$i]}"
done
这将所有分配给数组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
答案 1 :(得分:0)
bash有一个特殊的变量
$@
包含当前执行的脚本的参数。我想这就是你在寻找的东西:
for arg in $@ ; do
# code
done
答案 2 :(得分: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
答案 3 :(得分:0)
即使您不需要in $@
,也可以这样做:
#!/bin/bash
i=0
for arg; do
my_array[i]="$arg"
echo "${my_array[i]}"
(( i++ ))
done
即,
如果
in words
不存在,for
命令将执行命令 对于设置的每个位置参数,一次,就好像in $@
一样 指定。