使用参数操作运行shell脚本

时间:2013-08-07 07:00:39

标签: linux bash shell ksh

我需要通过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 个答案:

答案 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

source

答案 3 :(得分:0)

即使您不需要in $@,也可以这样做:

#!/bin/bash

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

即,

  

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