2013-10-30 39 views
0

我在執行下面的程序時遇到問題。我需要從命令行讀取輸入並將其輸出爲輸出。 每次運行命令行參數的數量都會有所不同。請幫忙。如何迭代shell中的命令行參數?

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

回答

3

在殼功能只需使用

#!/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 
+2

或者只是使用'for arg;做'...'在$ @「'中是默認值。 – Alfe

1

延斯給你正確的答案。你的方法能夠工作,利用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 
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 
相關問題