使用模数运算进行Shell编程

时间:2012-10-05 04:26:35

标签: shell modulus

我正在尝试编写一个shell程序,在给定参数的情况下,打印程序的名称和参数中的每个奇数单词(即,甚至不是单词)。但是,我没有得到预期的结果。在跟踪我的程序时,我注意到,尽管奇数字上的模数返回值为1(例如,第5个字,5%2 = 1),程序仍然将结果视为0(偶数字)并且不打印这个单词。这可能会出现什么问题?

这里包含我的代码和跟踪输出,以确切了解我的内容。 (抱歉不包括代码作为文本,我是vim的新手,还不知道复制/粘贴) Code Output

2 个答案:

答案 0 :(得分:3)

$result(需要一个美元符号)

答案 1 :(得分:3)

echo \$$#更改为echo $1。但重写脚本可能更简单:

#!/bin/sh

echo $0
while [ $# -gt 0 ]; do
    expr $# % 2 > /dev/null && echo $1
    shift
done