For 循环 for shell 变量
For loop for shell Variables
概览:
我正在尝试为需要多个参数的函数编写错误代码。
示例:
myfunction arg1 arg2 arg3 arg4
如果这些参数中的任何一个为空,我想告诉用户一个语法错误。
尝试次数:
我试过没有写出单独的参数:
# 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
有几种方法可以解决这个问题:
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
}
"$@"
可能更加地道。 !
的间接寻址虽然不常见,但非常方便。
Caleb Adams 指出我可以尝试这样的事情:
# Error Checking
[[ $# != 4 ]] && {
printf "Syntax Error: Missing Operator see:\n\tansi-color --help\n"
exit
}
就我个人而言,我会使用 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
}
概览:
我正在尝试为需要多个参数的函数编写错误代码。
示例:
myfunction arg1 arg2 arg3 arg4
如果这些参数中的任何一个为空,我想告诉用户一个语法错误。
尝试次数:
我试过没有写出单独的参数:
# 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
有几种方法可以解决这个问题:
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
}
"$@"
可能更加地道。 !
的间接寻址虽然不常见,但非常方便。
Caleb Adams 指出我可以尝试这样的事情:
# Error Checking
[[ $# != 4 ]] && {
printf "Syntax Error: Missing Operator see:\n\tansi-color --help\n"
exit
}
就我个人而言,我会使用 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
}