免费注册 查看新帖 |

Chinaunix

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

如何判断传给shell的一个参数里,有多少个空格? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-23 16:04 |只看该作者 |倒序浏览
我写了一个shell脚本,需要接收一个参数.
脚本里面调用一个C的程序
如下

vi test.sh
#!/bin/bash
#start
./a.out $@

#end

运行时
./test.sh 参数

我的目标是
这个参数格式不固定, 可能没有空格,也可能含有一个或多个空格.如果含有空格,我需要在有空格的地方加一个\转意.  

主要是因为那个C程序,不能正确识别.必须要在参数里有空格的地方前加 \ 这个转意才可以.
即这种效果.
./a.out aa\ aa

请教该如何处理.


谢谢

论坛徽章:
0
2 [报告]
发表于 2006-11-23 16:06 |只看该作者
这个test.sh是由一个页面调用的.页面并不判断这个参数的组成.只是单纯的调用.

论坛徽章:
0
3 [报告]
发表于 2006-11-23 16:07 |只看该作者
介样如何?
./a.out "aa aa"

论坛徽章:
0
4 [报告]
发表于 2006-11-23 16:15 |只看该作者
原帖由 awk就是awp加ak 于 2006-11-23 16:07 发表
介样如何?
./a.out "aa aa"



这样写,只能是shell可以把他当作1个参数.
但是里面的C程序,却不行.会出错.当成 "aa和aa" 2个参数.

只有这种方式可以
./a.out aa\ aa

论坛徽章:
0
5 [报告]
发表于 2006-11-23 16:21 |只看该作者
$cat a.c
#include <stdio.h>

int main(int argc, char **argv){

        printf("---%s----\n", argv[1]);

        return 0;
}
$gcc a.c
$a.out "bbb ccc"
---bbb ccc----

论坛徽章:
0
6 [报告]
发表于 2006-11-23 16:58 |只看该作者
哦,谢谢,我在看看.

论坛徽章:
0
7 [报告]
发表于 2006-11-23 17:44 |只看该作者
原帖由 awk就是awp加ak 于 2006-11-23 16:21 发表
$cat a.c
#include <stdio.h>

int main(int argc, char **argv){

        printf("---%s----\n", argv[1]);

        return 0;
}
$gcc a.c
$a.out "bbb ccc"
---bbb ccc ...


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP