C. *_*oss 4 unix shell scripting ksh
我在KornShell(ksh)中有以下代码:
FAILURE=1
SUCCESS=0
isNumeric(){
if [ -n "$1" ]; then
case $1 in
*[!0-9]* | "") return $FAILURE;
* ) return $SUCCESS;
esac;
else
return $FAILURE;
fi;
}
#...
FILE_EXT=${FILE#*.}
if [ isNumeric ${FILE_EXT} ]; then
echo "Numbered file."
fi
#...
Run Code Online (Sandbox Code Playgroud)
在某些情况下,文件名没有扩展名,这会导致FILE_EXT变量为空,这会导致以下错误:
./script[37]: test: 0403-004 Specify a parameter with this command.
我应该如何调用此函数以便我不会收到此错误?
在测试函数的退出代码时,应该不使用方括号,否则,您将始终获得"true".另外,你应该引用你的变量.您可以为空扩展进行额外测试,如下所示:
FILE_EXT=${FILE#*.}
if isNumeric "${FILE_EXT}" &&
[ "${FILE_EXT}" != "${FILE}" -a "${FILE_EXT}" != "" ]
then
echo "Numbered file."
fi
Run Code Online (Sandbox Code Playgroud)
编辑:添加测试以处理以"."结尾的文件名.