我正在编写bash脚本来检查fstab
结构。
在for
循环中,我已经放置了一个return
语句,以便稍后在脚本中使用退出代码,但似乎return
语句在打印后打破了循环首先要求输出
如何在不破坏循环的情况下指定返回码1,这样我才能得到所有结果,而不仅仅是第一个?
for i in $(printf "$child"|awk '/'$new_mounts'/'); do
chid_count=$(printf "$child"|awk '/'$new_mounts'/'|wc -l)
if [[ $chid_count -ge 1 ]]; then
echo -e "\e[96mfstab order check failed: there are child mounts before parent mount:\e[0m"
echo -e "\e[31mError: \e[0m "$child"\e[31m mount point, comes before \e[0m $mounts \e[31m on fstab\e[0m"
return 1
else
return 0
fi
done
答案 0 :(得分:1)
如果您阅读了该语言的文档,请立即返回假设返回的内容。这并不是shell的独特之处 - 我实际上无法想到使用return
构造的单一语言,而不会以这种方式行事。< / p>
如果要将值设置为稍后用作返回值,请使用变量:
yourfunc() {
local retval=0
for i in ...; do
(( child_count >= 1 )) && retval=1
done
return "$retval"
}