0

我在执行以下程序时遇到问题。我需要从命令行读取输入并将它们打印为输出。每次运行的命令行参数的数量都会有所不同。请帮忙。

for ((c = 1 ; c <= $# ; c++))
  do
   echo "I got you"
   echo $($c)
  done
4

3 回答 3

3

只需使用

 #!/bin/sh
 printf 'Number of args: %d\n' $#
 printf 'Args are:\n'
 printf '<%s>\n' "$@"

也适用于 shell 函数。如果需要迭代,

 for arg in "$@"; do
    something with $arg
 done
于 2013-10-30T11:12:53.710 回答
1

Jens 给你正确的答案。您的方法可以工作,使用变量间接

set -- a b c d e

for (( c = 1; c <= $#; c++ )); do
    echo "\$$c = ${!c}"
done
$1 = a
$2 = b
$3 = c
$4 = d
$5 = e
于 2013-10-30T12:11:05.150 回答
0

这是一个简单的 bash 脚本,myscript 输出如下所示 ./cmdArgs.sh num1 num2 num3 num4 我得到你 num1 我得到你 num2 我得到你 num3 我得到你 num4

#!/bin/bash
while [ $# != 0 ]
do
echo "I got you"
echo "$1"
shift
done
于 2013-10-31T03:24:56.917 回答