免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1192 | 回复: 3
打印 上一主题 下一主题

[其他] 求助!通过脚本参数传命令到shell脚本内执行的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-03 14:08 |只看该作者 |倒序浏览
直接把命令写在脚本当中可以执行成功:

脚本:

# Command to get the correct log file from a list of log files
GETLOGCOMMAND=$1 #Argument 1

# Get the current in use log file under the provided log file directory
#       LOGFILENAME=`$GETLOGCOMMAND`
        LOGFILENAME=`ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print $9 }'|head -1`

        echo $GETLOGCOMMAND
        echo $LOGFILENAME

返回结果:
#./CheckLog_CTI “ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print \$9 }'|head -1”
ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print $9 }'|head -1
scs_svr.20150302_161513_882.log
#


然而同样的命令通过参数传进去就无法返回正确结果:


脚本:

# Command to get the correct log file from a list of log files
GETLOGCOMMAND=$1 #Argument 1

# Get the current in use log file under the provided log file directory
       LOGFILENAME=`$GETLOGCOMMAND`
#     LOGFILENAME=`ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print $9 }'|head -1`

        echo $GETLOGCOMMAND
        echo $LOGFILENAME

返回结果:
#./CheckLog_CTI “ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print \$9 }'|head -1”
ls: |: No such file or directory
ls: awk: No such file or directory
ls: '{if(length==83): No such file or directory
ls: print: No such file or directory
ls: $9: No such file or directory
ls: }'|head: No such file or directory
ls -lt /tmp/logs/scs_svr/ | awk '{if(length==83) print $9 }'|head -1
/tmp/logs/scs_svr/: total 209588 -rw-r----- 1 genesys genesys1 9287938 Mar 3 14:03 scs_svr.20150302_161513_882.log -rw-r----- 1 genesys genesys1 131072 Mar 3 14:02 scs_svr.20150203_032331_241.snapshot.log -rw-r----- 1 genesys genesys1 10240011 Mar 2 16:15 scs_svr.20150301_161333_260.log -rw-r----- 1 genesys genesys1 10240040 Mar 1 16:13 scs_svr.20150228_161107_782.log -rw-r----- 1 genesys genesys1 10240040 Feb 28 16:11 scs_svr.20150227_160906_192.log -rw-r----- 1 genesys genesys1 10240061 Feb 27 16:09 scs_svr.20150226_160709_520.log -rw-r----- 1 genesys genesys1 10240009 Feb 26 16:07 scs_svr.20150225_160550_797.log -rw-r----- 1 genesys genesys1 10240000 Feb 25 16:05 scs_svr.20150224_160450_322.log -rw-r----- 1 genesys genesys1 10240007 Feb 24 16:04 scs_svr.20150223_160221_956.log -rw-r----- 1 genesys genesys1 10240006 Feb 23 16:02 scs_svr.20150222_155952_186.log -rw-r----- 1 genesys genesys1 10240002 Feb 22 15:59 scs_svr.20150221_155757_492.log -rw-r----- 1 genesys genesys1 10240007 Feb 21 15:57 scs_svr.20150220_155556_624.log -rw-r----- 1 genesys genesys1 10240007 Feb 20 15:55 scs_svr.20150219_155321_331.log -rw-r----- 1 genesys genesys1 10240013 Feb 19 15:53 scs_svr.20150218_155112_039.log -rw-r----- 1 genesys genesys1 10240011 Feb 18 15:51 scs_svr.20150217_154754_051.log -rw-r----- 1 genesys genesys1 10240000 Feb 17 15:47 scs_svr.20150216_155255_831.log -rw-r----- 1 genesys genesys1 10240042 Feb 16 15:52 scs_svr.20150215_155028_340.log -rw-r----- 1 genesys genesys1 10240026 Feb 15 15:50 scs_svr.20150212_135351_285.log -rw-r----- 1 genesys genesys1 10240003 Feb 12 13:53 scs_svr.20150211_001014_219.log -rw-r----- 1 genesys genesys1 10240021 Feb 11 00:10 scs_svr.20150209_102333_718.log -rw-r----- 1 genesys genesys1 10240020 Feb 9 10:23 scs_svr.20150207_204356_280.log -rw-r----- 1 genesys genesys1 10240001 Feb 7 20:43 scs_svr.20150206_065523_606.log
#


可以看到同样的命令直接写在脚本中和通过参数传入再执行,返回的结果完全不同。 echo也显示传入的命令和直接写的一模一样,为什么会发生这种问题呢?

求高手指点~

论坛徽章:
0
2 [报告]
发表于 2015-03-03 14:11 |只看该作者
搞不懂为什么第二种方式, ls会把“|”,“awk”等后面的东西都当成自己的参数, 难道是管道符失效了?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2015-03-03 18:53 |只看该作者
回复 1# vodkak

try to use eval

eval "LOGFILENAME=\`$GETLOGCOMMAND\`"
   

论坛徽章:
0
4 [报告]
发表于 2015-03-04 12:16 |只看该作者
jason680 发表于 2015-03-03 18:53
回复 1# vodkak

try to use eval



真的有效,又学到了,多谢啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP