繁体   English   中英

if语句总是转到else

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM