【发布时间】:2017-03-12 12:52:48
【问题描述】:
我有一个文件/tmp/gish.dat,其中包含一个数字(大于 0,以及一个或多个数字)或什么都不包含。
如果存在数字,我希望我的函数回显# 以及数字(例如#64)。如果没有数字,我希望我的函数什么都不做。
get_issue() {
if [ -f "/tmp/gish.dat" ]
then
iss=$(cat /tmp/gish.dat | grep -Eo '[0-9]+')
if [[ iss =~ '[0-9]+' ]]
then
echo "#$iss"
fi
fi
}
由于某种原因,内部 if 永远不会匹配。对 bash 非常陌生。
【问题讨论】:
-
认为您的变量缺少美元符号。在 if 条件下将其更改为 $iss -。
-
假设您的外部如果工作正常,请尝试打印 shell 调用 (iss) 的结果并检查它是否正常工作。编辑:很确定你错过了美元符号,正如本杰明已经提到的那样。
-
也许我还建议您查看 -s 选项来测试文件是否为空:)
-
Protip:shellcheck 自动检测此类问题