免费注册 查看新帖 |

Chinaunix

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

AWK编程中单引号问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-20 20:57 |只看该作者 |倒序浏览
----------------functions.sh-----------------------
#!/bin/sh
chop()
{
    _STR=$1
    _CHOP=$2
    _CHOP=`expr $_CHOP + 1`
    if [ $# -ne 2 ]; then
        echo "check_length: I need a string  and how many characters to chop"
       return 1
    fi
    _LENGTH=`echo $_STR|awk '{ print length($0)}'`
    if [ "$_LENGTH" -lt "$_CHOP" ];then
        echo "sorry ,you have asked to chop more characters than there are in the string"
        return 1
    fi
    echo $_STR|awk '{print substr($1,'$_CHOP')}'       #%%%%%%%%%%%
}



------------------------test.sh--------------------------------
#!/bin/sh
#name:test
if [ -r /root/chop ];then
    . /root/chop
fi
echo "start now..."
CHOPPED=`chop "Honeysuckle"  5`
echo $CHOPPED       
echo "end now."

function.sh是一个函数文件. test.sh调用该函数文件.
我的问题是:带有#%%%%%%%%%%%%符号的那行为什么$1两侧没有单引号,而$_CHOP变量两边却有单引号.(我知道这行的单引号的作用是这样的:
'{print substr($1,'-----$_CHOP-----')}'   ,分成这么三部分)

论坛徽章:
0
2 [报告]
发表于 2004-10-20 22:40 |只看该作者

AWK编程中单引号问题

因为要用到$_CHOP这个变量啊,所以$_CHOP要在单引号外。
看十三问

论坛徽章:
0
3 [报告]
发表于 2004-10-20 23:30 |只看该作者

AWK编程中单引号问题

可是$1这个变量也用到了呀。为什么它不在单引号外呢?他们有什么不同呢?

论坛徽章:
0
4 [报告]
发表于 2004-10-20 23:35 |只看该作者

AWK编程中单引号问题

$1要传给awk啊,所以要在单引号里

论坛徽章:
0
5 [报告]
发表于 2004-10-22 03:56 |只看该作者

AWK编程中单引号问题

awk -v arg=$arg ' { arg.... }'
awk里arg不再要$,另,awk里的$1不是sh里的$1

论坛徽章:
0
6 [报告]
发表于 2004-10-24 15:19 |只看该作者

AWK编程中单引号问题

有点明白了.谢谢楼上的各位兄弟.那么是不是可以把这行改成如下也有同样效果呢?
awk '{print substr('$_STR','$_CHOP')}'
.我去试试看.

论坛徽章:
0
7 [报告]
发表于 2004-10-24 16:06 |只看该作者

AWK编程中单引号问题

实验了一下,发现上述的方法不成.如下才行:
echo $_STR|awk '{print substr($_STR,'$_CHOP')}'
我又看了一下<Linux与Unix Shell 编程指南>,上边有个例子跟这个类似.它是这样写的.
$_STR是Shell变量,但也没有在单引号外.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-10-24 16:09 |只看该作者

AWK编程中单引号问题


  1. A=123456 B=2 C=4
  2. awk '{print substr('"$A"','"$B"','"$C"')}'
  3. or
  4. awk -v a=$A -v b=$B -v c=$C '{print substr(a,b,c)}'
复制代码

注意单双引号的使用

论坛徽章:
0
9 [报告]
发表于 2004-10-24 16:47 |只看该作者

AWK编程中单引号问题

楼上的兄台,我也照你那样,把$_STR用双引号引起来了,就是如下:awk '{print substr('"$_STR"','$_CHOP')}'   这样我试了,但是不行。在我这个例子中没成功。
但是我在书里看到过你写的这样示例。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-10-24 16:49 |只看该作者

AWK编程中单引号问题

STR和CHOP的内容是什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP