gpt4 book ai didi

bash 脚本在变量赋值时崩溃

转载 作者:行者123 更新时间:2023-11-29 09:27:46 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本来自动执行一些 opencv 代码,我需要多次运行这些代码并输入一组变量。出于某种原因,当我尝试将 0 分配给标志变量时,我的 bash 脚本一直崩溃。我也在 if 循环之外尝试过这个,它也会导致脚本崩溃。

#!/bin/bash
set -e

# Build most recent code
cd build2/
cmake ..
make

Scale=(9 9)

inputType="scale"

flag=1
counter=0
for i in ${Scale[@]}; do
echo iteration: $counter

if [ $counter -eq 0 ]
then
echo first iteration
let flag=0 #Crashes Here
echo after assignment $flag

else
echo not first iteration
let flag=1 #Doesn't crash here
echo after assignment $flag
fi

echo starting program
#Note 1.inputValue 2.Input Type 3.firstGo
./multiDimen ${i} $inputType $flag

echo Test Type is: $inputType
let counter=counter+1
done
echo Done

为什么会这样?

最佳答案

使用 set -e,结果为零的算术计算是您必须处理的“错误”。用普通赋值替换有问题的 let 会删除算术上下文,所以这可能是您应该做的。

您仍应检查脚本的其余部分是否存在类似问题,或者放弃使用 set -e,尤其是当您不是 Bash 脚本专家时。特别是,如果您正在测试的程序可以返回非零退出代码,那么脚本仍然会终止。

关于bash 脚本在变量赋值时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com