LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1524|回复: 13

请教大虾,shell怎么把参数加引号?

[复制链接]
发表于 2006-3-31 15:37:56 | 显示全部楼层 |阅读模式
请教大虾我现在遇到这样一个问题,
  在传参数时,遇到带空格的参数我加上引号后,shell自动把我加的引号去掉了传给java程序,导致出错。
原来如下:test.sh
------------------------------------------------------------
Commandstr=""
   until [ $# -eq 0 ]
   do
        Commandstr="$Commandstr $1"
        echo $Commandstr  //test
        shift
   done
  
   #Run the dpmhp command
   "$JAVA_HOME"/bin/java -jar $JarFile $Commandstr


--------------------------------------------------------------------

我执行时 如下:
〉test.sh export -c rp3410 -outfile "c:\program file\peng"

结果系统自动把我的c:\program file\peng引号去掉了(虽然他知道那只是一个参数)再传给程序,我希望系统保留我的引号,直接传给JAVA程序。大家懂了吗?

谢谢指点!!!!
发表于 2006-3-31 16:10:48 | 显示全部楼层
'"c:\program file\peng"'

是不是这个意思。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 16:23:12 | 显示全部楼层

不是,是希望SHELL不要把我加的参数上的引号去掉,而不是要两个引号。

即是希望shell不要自动把我加的引号去掉啊。
回复 支持 反对

使用道具 举报

发表于 2006-3-31 16:30:54 | 显示全部楼层
这样shell就不会把"看作特殊字符了,你试试看呢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 17:40:22 | 显示全部楼层

你什么都没给啊!

你没写出来,是不是在引号前加转义符\?
  那样不行啊,中间有空格,必须引起来啊!
我希望Java最后的到的参数是 aaa  "c:\program files" bbb 等,shell把引号也传给JAVA.
谢谢!

哦,你的意思是加两个引号?也不对啊,那样前两个引号就配对了,后两个也配对了系统就会认为是这样""c:\program和file""两个参数了
回复 支持 反对

使用道具 举报

发表于 2006-3-31 17:45:17 | 显示全部楼层
转义符和单引号不是起了同样的作用?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 18:06:01 | 显示全部楼层

我希望是在shell代码里修改,而不是运行时自己加很多引号什么的。

我希望是在最好能在shell代码里修改。
先单引再双引是可以的,问题是系统还是认为是两个参数!!

在c里已经改好了windows下可以运行,unix里就是不行啊,郁闷!!
回复 支持 反对

使用道具 举报

发表于 2006-4-1 01:31:09 | 显示全部楼层
Post by atixujie
我希望是在最好能在shell代码里修改。
先单引再双引是可以的,问题是系统还是认为是两个参数!!

在c里已经改好了windows下可以运行,unix里就是不行啊,郁闷!!

Why?

  1. #!/bin/bash
  2. for i in "$@"; do
  3.     echo "$i"
  4. done
  5. #############
  6. >test.sh export -c rp3410 -outfile '"c:\program file\peng"'
  7. export
  8. -c
  9. rp3410
  10. -outfile
  11. "c:\program file\peng"
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-3 12:43:50 | 显示全部楼层

详细解释一下我的问题

不行,失败了,再想别的办法!!谢谢大家。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-3 12:59:14 | 显示全部楼层
试过了,不行啊,谢谢。
--------------------------------
aerofox
资 料:注册会员

注册日期: Mar 2006
帖子: 8
精华: 0
        第 2 帖   发帖时间: 06-04-02, 22:26



把这一行:
"$JAVA_HOME"/bin/java -jar $JarFile $Commandstr
改为:
"$JAVA_HOME"/bin/java -jar "$JarFile" "$Commandstr"
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表