我在执行以下程序时遇到问题。我需要从命令行读取输入并将其作为输出打印出来。 每次运行时命令行参数的数量会有所不同。请帮忙。
for ((c = 1 ; c <= $# ; c++))
do
echo "I got you"
echo $($c)
done
答案 0 :(得分: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
答案 1 :(得分:1)
Jens为您提供正确的答案。您的方法可以使用variable indirection:
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
答案 2 :(得分: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