免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3912 | 回复: 3

怎样在SHELL中处理string?怎样获得输到stderr的内容? [复制链接]

论坛徽章:
0
发表于 2003-03-16 07:20 |显示全部楼层
大家好,我是SHELL初学,有诸多问题不能解决,挑两个如下:

1,怎么在SHELL中处理字符串

比如说,写一个脚本程序,读入一个参数,并判断,这个参数是不是以"http://"开头的?如果是,把这个参数赋给变量X,把前缀变成"https://"然后赋给变量Y。用SHELL编写怎么写?

代码:

if [ $# -eq 1 ] ; then
    X=$1
    TEMP=substr($X,0,7)
    if [ $TEMP=="http://" ] ; then
        Y="https://"+substr($X,
        echo "X=" $X
        echo "Y=" $Y
    fi
fi



上面的代码有好多错(显然),因为我不知道在SHELL里面应该怎样处理字符串。恳请高手帮我修改修改。


2,怎样把一个命令输出到stderr的内容赋给一个变量。

比如一个名为a.out的程序往stdout输出字符串"to stdout",往stderr输出字符串"to stderr"。
在SHELL中使用下面的语句:

X=`a.out`

那么程序输出到stdout的内容"to stdout"将被赋给变量X,而输出到stderr的内容"to stderr"将被打印在屏幕上。
请问用什么方法把输出到stderr的内容"to stderr"赋给变量Y,同时把输出到stdout的内容"to stdout"赋给变量X?



我知道我的问题很弱,对不起大家了。

论坛徽章:
0
发表于 2003-03-16 12:24 |显示全部楼层

怎样在SHELL中处理string?怎样获得输到stderr的内容?

我只能回答你第一个问题,shell中好象没有substr()这种函数,你只有改动如下才行:
if [ $# -eq 1 ] ; then
X=$1
TEMP=`echo $x|awk '{print substr($1,0,7)}'`
if test "$TEMP" = http://  ; then
Y="https://"`echo $x|awk '{print substr($1,'`
echo "X=" $X
echo "Y=" $Y
fi
fi

论坛徽章:
0
发表于 2003-03-16 13:40 |显示全部楼层

怎样在SHELL中处理string?怎样获得输到stderr的内容?

第2 个可以这么做:
#a.out
echo aaa
echo bbb -n 1>!2>aa
然后再写另一个脚本
bb.out
cat aa

————————————————
先试试!这样做,好像比较笨,等高手来给你更好的方法被!!

论坛徽章:
0
发表于 2003-03-16 17:40 |显示全部楼层

怎样在SHELL中处理string?怎样获得输到stderr的内容?

谢谢上面二位。

看来我还是没有太适应SHELL编程的风格,总想着从SHELL语言本身去寻找解决方法,没有想到可以用awk来搞定字符串处理。可见我还不够开阔。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP