我刚开始学习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
答案 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