我是bash和linux的新手,不能理解为什么我的代码中会有这个错误((standard_in) 1:语法错误)。
#!/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!" 发布于 2018-01-13 18:07:35
这是您用于算术计算的工具bc产生的错误。我怀疑导致echo "obase=16; $var" | bc的变量赋值$var有一个错误的/空值,这是bc不喜欢的。
如果您使用的是bash外壳,那么您可以使用$((..))结构来使用它的超算术计算,如下所示
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将所需的十进制转换为十六进制。此外,您正在if和else子句中执行相同的操作。此外,还要删除命令替换的过时的反标记语法,而应使用$(..)。
https://stackoverflow.com/questions/48238631
复制相似问题