问题描述
- shell if 判断方法返回结果的问题
-
#!/bin/shlogFile=/opt/scripts/chkconns_log/chklog.log;dailyLogFile=${logFile}_dailyLog;logExists(){ if [ -f ${logFile} ]; then echo Log file is exists ! return 0; else echo Log file is not exists ! ${logFile} return 1; fi}getDailyFileName(){ if [[ ${logExists} -ne 0 ]]; then ------------------ 出问题的语句 return; fi
上面 出问题的语句 行中调用logExists方法,并判断其结果,在 centos 中可以正常执行, 但在 debain 中改行不能正常执行。
默认 if [ [${logExists} -eq 1 ] ]; then 报错 [: Illegal number: [
改为 if ( ""${logExists}"" -eq 1 ) then 报错 : Permission denied
改为 if [ ""${logExists}"" -eq 1 ]; then 报错 [: Illegal number:请教各位大神们,该问题 何解~~~~~!
解决方案
Permission denied应该是权限不够,可能语法是对的,其他两个错误是语法不对。
用chmod修改下权限再试试。
希望能帮到你。
解决方案二:
该文件的权限 chmod 给的是 777 ,还是报错呢。
解决方案三:
/opt/scripts/chkconns_log/chklog.log这个文件有权限?
解决方案四:
楼主很可惜shell不像其他语言一样可以直接函数返回值进行调用, 使用return 只能通过 $?来进行获取返回的值, 我操作了一遍,如果非要实现的话,可以使用变量的赋值来实现
if [ -f ${logFile} ]; then
echo Log file is exists !
x=0;
else
echo Log file is not exists ! ${logFile}
x=1;
fi
.....
if [[ ${x} -ne 0 ]]; then
这样就可以实现了
时间: 2024-10-28 02:19:10