我正在尝试为需要多个参数的函数编写错误。
示例:
myfunction arg1 arg2 arg3 arg4
如果这些参数中的任何一个为null,我想给用户一个语法错误。
我没有写过我试过的个别论据:
# Error Checking
for i in "{1.4}"
do
# Check for null values of Bash variables:
[[ -z $"$i" ]] && {
printf "Syntax Error: Missing Operator see:\nmyfunction --help\n"
exit
}
done
- 和 -
# Error Checking
for i in ${1..4}
do
# Check for null values of Bash variables:
[[ -z $i ]] && {
printf "Syntax Error: Missing Operator see:\nmyfunction --help\n"
exit
}
done
我想用for循环做什么呢?
非常感谢任何帮助。
提前致谢!
在我开始搞乱报价和美元符号之前,还尝试了以下内容:
# Error Checking
for i in {1..4}
do
[[ -z $"$i" ]] && {
printf "Syntax Error: Missing Operator see:\nansi-color --help\n"
exit
}
done
答案 0 :(得分:2)
有几种方法可以解决这个问题:
die () { echo "$@" >&2; exit 1; }
myfn () {
[[ $# == 4 ]] || die 'wrong number of args'
for d in "$@"; do [[ $d ]] || die 'null arg'; done
}
myfn2 () {
[[ $# == 4 ]] || die 'wrong number of args'
for ((i = 1; i <= $#; i++)); do
[[ ${!i} ]] || die 'null arg'
done
}
"$@"
可能更具惯用性。使用!
的间接非常方便,但不常见。
答案 1 :(得分:0)
Caleb Adams指出我可以尝试这样的事情:
# Error Checking
[[ $# != 4 ]] && {
printf "Syntax Error: Missing Operator see:\n\tansi-color --help\n"
exit
}
答案 2 :(得分:0)
就个人而言,我使用bash数组,然后检查其长度:
args=($*)
echo ${#args[*]}
但你可以这样做:
myfunc() { for i in {1..4}; do
if [[ -z ${!i} ]]; then
echo error at $i
return -1
fi
done
...do other stuff
}