首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(standard_in) 1:语法错误

(standard_in) 1:语法错误
EN

Stack Overflow用户
提问于 2018-01-13 17:40:54
回答 1查看 2.9K关注 0票数 1

我是bash和linux的新手,不能理解为什么我的代码中会有这个错误((standard_in) 1:语法错误)。

代码语言:javascript
复制
#!/bin/bash
file_data=$(<merge.bmp)
counter=0
file_size=$(stat -c%s "merge.bmp")
touch file1.bmp
touch file2.bmp
while [ $counter -lt 10 ]; do
    if [ `echo "$counter % 2" | bc` -eq 0 ]; then
            var=`xxd -p -l1 -s $counter merge.bmp`
            hex_var=$(echo "obase=16; $var" | bc) 
    else
            var=`xxd -p -l1 -s $counter merge.bmp`
            hex_var=$(echo "obase=16;$var" | bc)
    fi
    let counter=counter+1
done
echo "DONE!" 
EN

回答 1

Stack Overflow用户

发布于 2018-01-13 18:07:35

这是您用于算术计算的工具bc产生的错误。我怀疑导致echo "obase=16; $var" | bc的变量赋值$var有一个错误的/空值,这是bc不喜欢的。

如果您使用的是bash外壳,那么您可以使用$((..))结构来使用它的超算术计算,如下所示

代码语言:javascript
复制
for (( counter=0; counter<10; counter++ )); do
    if (( counter % 2 == 0 )); then
        var=$(xxd -p -l1 -s "$counter" merge.bmp)
        printf -v hex_var '%x' "$var"
    fi
done

%x将所需的十进制转换为十六进制。此外,您正在ifelse子句中执行相同的操作。此外,还要删除命令替换的过时的反标记语法,而应使用$(..)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48238631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档