我在执行以下程序时遇到问题。我需要从命令行读取输入并将它们打印为输出。每次运行的命令行参数的数量都会有所不同。请帮忙。
for ((c = 1 ; c <= $# ; c++))
do
echo "I got you"
echo $($c)
done
只需使用
#!/bin/sh
printf 'Number of args: %d\n' $#
printf 'Args are:\n'
printf '<%s>\n' "$@"
也适用于 shell 函数。如果需要迭代,
for arg in "$@"; do
something with $arg
done
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
这是一个简单的 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