我在執行下面的程序時遇到問題。我需要從命令行讀取輸入並將其輸出爲輸出。 每次運行命令行參數的數量都會有所不同。請幫忙。如何迭代shell中的命令行參數?
for ((c = 1 ; c <= $# ; c++))
do
echo "I got you"
echo $($c)
done
我在執行下面的程序時遇到問題。我需要從命令行讀取輸入並將其輸出爲輸出。 每次運行命令行參數的數量都會有所不同。請幫忙。如何迭代shell中的命令行參數?
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' "[email protected]"
作品爲好。如果你需要迭代,
for arg in "[email protected]"; do
something with $arg
done
延斯給你正確的答案。你的方法能夠工作,利用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
這裏有一個簡單的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
或者只是使用'for arg;做'...'在$ @「'中是默認值。 – Alfe