我想在函数中设置变量值,但也能够在 if 中使用它。args 数组是运行 bash 脚本时应用的参数args=("$@")
。
containsfilepath () {
local e
for e in "${@:1}"; do [[ "$e" =~ .*".out" ]] && return 0 && local $path="abc"; done
return 1
}
所以我可以这样做
if containsfilepath "${args[@]}" ; then
echo "$path" "\n"
fi
我已经编写了代码但它不起作用,有什么想法吗?
答案1
本地路径语句中有一个额外的美元符号。试试这个:
containsfilepath () {
local e
for e in "${@:1}"; do [[ "$e" =~ .*".out" ]] && return 0 && local path="abc"; done
return 1
}
在这段代码中,由于return 0
执行了前path
到达赋值语句后,该语句从未path
被赋值。如果希望将 path 赋值给稍后可访问的值,则需要反转语句并local
删除限定符。尝试:
containsfilepath () {
local e
for e in "${@:1}"
do
[[ "$e" =~ .*".out" ]] && { path="abc"; return 0; }
done
return 1
}