免费注册 查看新帖 |

Chinaunix

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

[系统管理] shell 怎么定义函数,知道当前的行号 [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-14 16:32 |只看该作者 |倒序浏览
本帖最后由 g361031315 于 2012-09-14 16:32 编辑

问个问题
shell脚本里,怎么定义一个函数,让他输出自己当前的行号。、

就是 定义好这个函数之后
我在 第10行调用它
他就输出10
我在第15行调用它
就输出15

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2012-09-14 17:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2012-09-14 17:55 |只看该作者
本帖最后由 hxre_cu 于 2012-09-14 18:12 编辑

这样行不
  1. $cat aa.sh
  2. #!/bin/bash

  3. echo -n "$LINENO " && echo command1
  4. echo -n "$LINENO " && echo command2
  5. echo -n "$LINENO " && echo command3
  6. echo -n "$LINENO " && echo command4

  7. $sh aa.sh
  8. 5 command1
  9. 6 command2
  10. 7 command3
  11. 8 command4
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2012-09-14 18:00 |只看该作者
本帖最后由 jason680 于 2012-09-14 18:13 编辑

回复 1# g361031315

How about caller

# cat a.sh

line(){
  echo call by line `caller 0 | awk '{print$1}'`
}

line
echo 123
echo 123
line

# bash a.sh
call by line 6
123
123
call by line 9

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
5 [报告]
发表于 2012-09-14 20:59 |只看该作者
嗯  我这么写了
#cat a.sh
Log(){
if [ $? -ne 0 ];then
    echo "$DomainName is $1 faild !!!" >> $IPlist.log
fi
}
log  2(几行就写几)

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
6 [报告]
发表于 2012-09-14 21:03 |只看该作者
谢谢了!回复 5# g361031315


   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
7 [报告]
发表于 2012-09-16 23:19 |只看该作者
本帖最后由 ly5066113 于 2012-09-16 23:19 编辑

回复 2# zooyo


    我来猜一下,应该是脚本哪行报错了,就把报错的行号输出来,方便找错误。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
8 [报告]
发表于 2012-09-16 23:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2013-08-13 17:17 |只看该作者
bash shell 有一个环境变量:LINENO。用下面的命令可以输出当前行号:
  echo $LINENO
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP