免费注册 查看新帖 |

Chinaunix

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

求助,关于*在shell中的解释 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-25 10:54 |显示全部楼层 |倒序浏览
本帖最后由 thinshootout 于 2010-10-25 11:03 编辑

shell脚本中以下语句:
    #!/bin/sh
    /usr/local/soliddb-6.3/bin/solsql -x returnerroronexit -x onlyresults -e"select * from request_results" "tcp 1315" username password

在执行时,*会被替换成工作目录下的所有文件,现在想让*保持原样传递给所执行的命令,请问该如何做?谢谢~

论坛徽章:
0
2 [报告]
发表于 2010-10-25 10:59 |显示全部楼层
回复 2# lkk2003rty


    用单引号'也不行~

论坛徽章:
0
3 [报告]
发表于 2010-10-25 11:02 |显示全部楼层
回复 4# blackold


    基本的shell,既不是bash,又不是csh, ksh

论坛徽章:
0
4 [报告]
发表于 2010-10-25 11:21 |显示全部楼层
回复 6# blackold

用反斜杠转义后,用-x调试:

    + /usr/local/soliddb-6.3/bin/solsql -x returnerroronexit -x onlyresults -e"select * from request_results" "tcp 1315" username passwd

cmd=Error: File '"tcp' can not be opened.

命令看起来没问题了,但是却把“tcp 1315”解释成读取文件。
但是把:/usr/local/soliddb-6.3/bin/solsql -x returnerroronexit -x onlyresults -e"select * from request_results" "tcp 1315" username passwd
直接在命令行下执行,就没有问题~

论坛徽章:
0
5 [报告]
发表于 2010-10-25 11:30 |显示全部楼层
回复 9# blackold


    #!/bin/sh是脚本起始提示shell去某位置查找解释命令的啊,所有脚本第一行不都是这样~

    不错,"tcp 1315"是solsql的参数,现在的问题正是该命令可以在命令行下执行,却不能在shell脚本中执行~

论坛徽章:
0
6 [报告]
发表于 2010-10-25 11:39 |显示全部楼层
回复 11# blackold


    我当前命令行的shell是bash,但是脚本执行解释器是sh。
   但是把脚本中的执行解释器换成bash后:#!/bin/bash,结果依旧,说明不是解释器的问题~

论坛徽章:
0
7 [报告]
发表于 2010-10-25 11:44 |显示全部楼层
回复 13# blackold


    ……

   我只想知道为什么该命令可以在命令行下执行,在shell脚本中就不行~~~

    可以把脚本就理解成只有那一行命令,前后又没有什么关联性,怎么检查?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP