if语句总是转到else

时间:2018-01-18 21:11:11

标签: bash scripting

我刚开始学习Bash脚本,我必须做一个程序,将一个位图图像分成两个(图像坏了),我已经在网上找到了如何编写循环和语句 但我不知道为什么我的if语句总是传给其他人。 if取2的模数等于0 这是以下代码

#!/bin/sh
OUTPUT="$(hexdump -v -e '/1 "%02X\n"' merge.bmp)"
echo $OUTPUT
vars=0
count=1
touch one
touch two
for i in $OUTPUT
    do 
    if (($vars%2==0))
    then
        echo "1"
    else
        echo "2"
    fi
    vars=$((vars+count))
done

在终端中出现以下错误

./q3.sh: 14: ./q3.sh: 2885%2==0: not found 

2

我真的不知道为什么if始终打印2

2 个答案:

答案 0 :(得分:2)

shebang线错了,应该是:

#!/bin/bash

((expression))bash扩展程序,sh中未提供。

答案 1 :(得分:2)

/bin/sh基础的(())版本是:

if test $(($vars % 2)) -eq 0; then
   echo "1"
   ...
fi

由于$(())知道变量名称,你甚至可以放弃美元并写下

if test $((vars % 2)) -eq 0; then
   echo "1"
   ...
fi