我正在研究考试练习问题,我们需要在文件上调用脚本。如果退出状态为非零,我们将失败次数增加1,否则我们将sum变量增加1。 由于我们实际上没有这个脚本,我只想验证我在纸上写的内容是否正确,假设我们调用的脚本称为compute,而args是所有文件参数。
SUM=0
NUMFAILS=0
SCRIPT=./$compute
for args in *; do
num=$SCRIPT args
if (($? -ne 0)); then
NUMFAILS++
else
SUM=(($SUM+$num))
fi
done
答案 0 :(得分:2)
sum=0
numfails=0
shopt -s nullglob
for args in *; do
if num=$(./compute "$args"); then
((sum+=num))
else
((numfails++))
fi
done
$?
来测试上一个命令的退出状态,也可以直接使用if
对其进行测试:if command; then echo CMD OK; fi
if output=$(command); then echo CMD OK; fi
NUMFAILS++
:您仍然需要使用((
来评估表达式:((numfails++))
num=$SCRIPT args
:您需要使用命令替换来替换命令的输出:num=$(./script "$args")
args
是一个变量,您需要使用美元符号展开它:"$args"
。引号是防止分词的必要条件。请注意,在算术上下文中,例如((++numfails))
,您不需要使用美元符号shopt -s nullglob
跳过for
循环set -e
,你应该使用preincrement ((++numfails))
和((sum+=num)) || true
来处理set -e
在结果时def imageToNumpy():
with Image.open('dark.jpg') as img:
nparray = np.fromstring(img.tobytes(), dtype=np.uint8)
nparray = nparray.reshape((img.size[1], img.size[0], img.layers))
return nparray
cv2.imwrite("testme.png", imageToNumpy() )
终止脚本的情况算术表达式等于0