1

我是 Shell 脚本编程的新手。我正在尝试制作一个仅输出奇数参数的程序。例如,“I am a robot”应该只给出“I a”。

我以为我可以使用 shift 命令以及 while 和 if 语句来遍历参数,但我不确定如何在 if 语句 ([]) 的方括号中传达除以 2 且余数为 1

#!/bin/sh
X=$1
shift
while [ $# -gt 0 ]; do
  if [ "HELP HERE" ]; then
     X=$1
     echo $X
  fi
  shift
 done
echo $X
4

3 回答 3

3

换两次怎么样?

while [ $# -gt 0 ]; do
    X=$1
    echo $X
    shift
    shift
done
于 2012-10-05T07:00:47.340 回答
0

nneonneo 的想法一定比下面的要好,但我将提出一种方法来检查参数是否为奇数,以防万一。

#!/bin/sh
cnt=1
while [ $# -gt 0 ]; do
  X=$1

  # output the current argument when the counter is odd.
  if [ $(($cnt%2)) -eq 1 ]; then
    echo $X
  fi

  cnt=$(($cnt+1))
  shift
done
于 2012-10-05T15:41:04.753 回答
0
#!/bin/bash

declare -a ODD
declare -a EVEN
ODDIX=0
EVENIX=0

while [ $# -ne 0 ]; do
    if (( $#%2 == 1 ));then
        ODD[$ODDIX]=$1
        ODDIX=$((ODDIX+1))
    else        
        EVEN[$EVENIX]=$1
        EVENIX=$((EVENIX+1))
    fi
    shift
done

echo ODD: ${ODD[@]}
echo EVEN: ${EVEN[@]}*
于 2012-10-05T22:41:02.960 回答