相关疑难解决方法(0)

如何在bash中使用浮点除法?

我试图在Bash脚本中划分两个图像宽度,但bash给出0了结果:

RESULT=$(($IMG_WIDTH/$IMG2_WIDTH))
Run Code Online (Sandbox Code Playgroud)

我研究了Bash指南,我知道我应该使用它bc,在他们使用的互联网的所有例子中bc.在echo我试图把同样的东西放在我的,SCALE但它没有奏效.

以下是我在教程中找到的示例:

echo "scale=2; ${userinput}" | bc 
Run Code Online (Sandbox Code Playgroud)

我怎么能让Bash给我一个漂浮0.5

floating-point bash arithmetic-expressions

211
推荐指数
13
解决办法
28万
查看次数

从shell脚本导入函数

我有一个shell脚本,我想用shUnit测试.脚本(和所有功能)都在一个文件中,因为它使安装更容易.

示例 script.sh

#!/bin/sh

foo () { ... }
bar () { ... }

code
Run Code Online (Sandbox Code Playgroud)

我想编写第二个文件(不需要分发和安装)来测试中定义的函数 script.sh

就像是 run_tests.sh

#!/bin/sh

. script.sh

# Unit tests
Run Code Online (Sandbox Code Playgroud)

现在的问题在于.(或source在Bash中).它不仅解析函数定义,还执行脚本中的代码.

由于没有参数的脚本没有任何坏处,我可以

. script.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但如果有更好的方法来实现我的目标,我就会徘徊.

编辑

我建议的解决方法在源脚本调用的情况下不起作用,exit所以我必须捕获退出

#!/bin/sh

trap run_tests ERR EXIT

run_tests() {
   ...
}

. script.sh
Run Code Online (Sandbox Code Playgroud)

run_tests调用该函数但是只要我重定向source命令的输出,脚本中的函数就不会被解析,并且在陷阱处理程序中不可用

这有效,但我得到的输出script.sh:

#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
   function_defined_in_script_sh
}
. script.sh
Run Code Online (Sandbox Code Playgroud)

这不打印输出但是我得到一个错误,该函数未定义:

#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
   function_defined_in_script_sh
}
. script.sh …
Run Code Online (Sandbox Code Playgroud)

shell

48
推荐指数
3
解决办法
4万
查看次数

bash中的数组数组

我试图逐行读取输入文件,其中包含由句点分隔的字段.我想将它们放入一个数组数组中,以便稍后我可以循环它们.输入似乎没问题,但是将它"推"到数组(inData)似乎不起作用.

代码如下:

Input file: 
GSDB.GOSALESDW_DIST_INVENTORY_FACT.MONTH_KEY
GSDB.GOSALESDW_DIST_INVENTORY_FACT.ORGANIZATION_KEY


infile=${1}

OIFS=$IFS
IFS=":"

cat ${infile} | while read line
do
      line=${line//\./:}
      inarray=(${line})
#      echo ${inarray[@]}
#      echo ${#inarray[@]}      
#      echo ${inarray[0]}
#      echo ${inarray[1]}
#      echo ${inarray[2]}

      inData=("${inData[@]}" "${inarray[@]}")
done 
IFS=$OIFS

echo ${#inData[@]}   

for ((i = 0; i < ${#inData[@]}; i++))
do
 echo $i
    for ((j = 0; j < ${#inData[$i][@]}; j++))
    do
       echo ${inData[$i][$j]}
    done
done
Run Code Online (Sandbox Code Playgroud)

arrays bash shell

37
推荐指数
3
解决办法
6万
查看次数

Bash shell十进制到二进制base 2转换

我正在寻找一种简单的方法在Bash中将十进制数转换为二进制数.我有需要转换的变量:

$ip1 $ip2 $ip3 $ip4
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以在不查看每个数字的情况下执行此操作?

我宁愿不要写很多代码.

binary bash shell decimal

29
推荐指数
3
解决办法
5万
查看次数

程序检查数字是否能被 2 整除且没有余数 BASH 时出现问题

我试图编写一个程序来看看计数是否能被 2 整除而没有余数这是我的程序

count=$((count+0))

while read line; do

if [ $count%2==0 ]; then
    printf "%x\n" "$line" >> file2.txt
else
    printf "%x\n" "$line" >> file1.txt
fi

count=$((count+1))
done < merge.bmp
Run Code Online (Sandbox Code Playgroud)

该程序并非每次进入真实状态时都有效

bash division

4
推荐指数
1
解决办法
6549
查看次数