[英]if statement always goes to the else
我刚开始学习Bash脚本,我必须做一个程序将一个位图图像转换为两个(图像已损坏),我已经在网络上找到了如何编写循环和语句的方法,但是我不知道为什么声明总是指向其他。 如果以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
shebang行是错误的,应该是:
#!/bin/bash
((expression))
是bash
扩展名,在sh
不可用。
(())
bashism的/bin/sh
版本是这样的:
if test $(($vars % 2)) -eq 0; then
echo "1"
...
fi
因为$(())
知道变量名,所以您甚至可以丢掉美元然后写
if test $((vars % 2)) -eq 0; then
echo "1"
...
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.