免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求一个脚本的写法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-24 15:44 |只看该作者 |倒序浏览
各位大侠,我的shell脚本里要执行很多./configure && make && make install,并且configure的时候可能会有不同的参数,想实现以下的一个函数,直接替换脚本相应地方即可:
function src_install(str)
{
      ./configure $str
      if [[ $? -eq 1]];then
          exit
      else
          make
          if [[ $? -eq 1]];then
                exit
          else
                make install
                if [[ $? -eq 1]];then
                   exit
                fi
          fi
      fi
}
但shell函数好像不能有输入参数,请问该如何实现呢

论坛徽章:
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
2 [报告]
发表于 2014-06-24 15:56 |只看该作者
回复 1# fbt045

shell基础二十篇
http://bbs.chinaunix.net/thread-452942-1-1.html

shell学习基础第十九篇-shell函数
http://bbs.chinaunix.net/thread-1820454-1-1.html


shell基础学习第二十篇-向脚本传递参数
http://bbs.chinaunix.net/thread-1823335-1-1.html


19.3 向函数传递参数
向函数传递参数就像在一般脚本中使用特殊变量$ 1 , $ 2 . . . $ 9一样,...

   

论坛徽章:
2
巳蛇
日期:2014-06-02 13:33:59午马
日期:2015-01-11 00:11:16
3 [报告]
发表于 2014-06-24 15:56 |只看该作者
shell函数是可以有输入的,举例:
  1. function myadd()
  2. {
  3.   echo $(($1+$2))
  4. }

  5. myadd 1 2
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-06-24 16:34 |只看该作者
三重if嵌套,辛苦楼主了。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
5 [报告]
发表于 2014-06-24 16:36 |只看该作者

合并一个if吧。

论坛徽章:
0
6 [报告]
发表于 2014-06-24 16:44 |只看该作者
expert1 发表于 2014-06-24 16:36
合并一个if吧。

是这样合并吗?make && make install

论坛徽章:
0
7 [报告]
发表于 2014-06-24 17:46 |只看该作者
command
if [[ $? -eq 1 ]];then
    exit
fi



command || exit

额外的。
$? -eq 1仅在上条命令返回值为1时为真,而上条命令可能返回1以外的非0值。
exit仅能退出脚本,不能根据$?判断为何种原因的退出,可以根据不同的原因exit 1等不同的返回值。

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
8 [报告]
发表于 2014-06-24 20:38 |只看该作者
回复 1# fbt045

目测直接这样就行了:
  1. src_install () {
  2.       ./configure  "$@"  &&  make && make install
  3. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-06-26 09:49 |只看该作者
关阴月飞 发表于 2014-06-24 20:38
回复 1# fbt045

目测直接这样就行了:


写成这样$?的返回值应该还是make install的吧?

论坛徽章:
0
10 [报告]
发表于 2014-06-26 09:50 |只看该作者
用户名注册后不能更改 发表于 2014-06-24 17:46
command
if [[ $? -eq 1 ]];then
    exit

我把标准错误输出重定向到文件中,具体看文件,因为这个脚本给客户用,出错就退出就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP