免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: The_X
打印 上一主题 下一主题

[其他] shell 函数获取动态参数问题,求解答 [复制链接]

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
11 [报告]
发表于 2014-09-24 14:53 |只看该作者
用$1取到参数数量,然后再逐个shift并取$1

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
12 [报告]
发表于 2014-09-24 14:53 |只看该作者
回复 10# The_X


funTest  $@
这样可以吗

论坛徽章:
0
13 [报告]
发表于 2014-09-24 14:56 |只看该作者
回复 12# Shell_HAT


能不能说说funTest内部如何解析这个参数数组?
我刚开始学习,很多都不懂,麻烦详细点,谢谢!

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
14 [报告]
发表于 2014-09-24 15:11 |只看该作者
回复 13# The_X
  1. funTest() {
  2.     for((i=1;i<=$#;i++)); do
  3.         echo ${!i}
  4.     done
  5. }
  6. funTest $@
复制代码

论坛徽章:
0
15 [报告]
发表于 2014-09-24 15:27 |只看该作者
回复 14# Shell_HAT


    非常感谢!
另外还想请教个问题,我想在一个文件中查找字符串 /rocketmqlogs/ 然后用 /rocketmqlogs_$proName/ 替换,其中$proName在前面已经对其赋值。
(不直接查找rocketmqlogs的原因是怕替换了不想替换的部分)
我知道格式:sed -i 's/查找的字符串/替换的字符串/g' /opt/rocketmq/rocketmq_$1/conf/logback_broker.xml
但如果直接替换的话会出错,下面是直接将要查找的串放入对应位置。
sed -i 's//rocketmqlogs///rocketmqlogs_$proName//g' /opt/rocketmq/rocketmq_$1/conf/logback_broker.xml

并且还一个问题是$proName替换的不是它对应的value

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
16 [报告]
发表于 2014-09-24 15:28 |只看该作者
本帖最后由 bulletmarquis 于 2014-09-24 15:29 编辑
  1. cat a.sh
  2. #!/bin/sh
  3. num=$1

  4. shift

  5. function funTest
  6. {
  7.   echo full param is $*
  8.   echo each one is
  9.   for((i=1;i<=$num;i++))
  10.   do
  11.     eval echo \$$i
  12.   done
  13. }


  14. funTest "$@"

  15. exit


  16. ./a.sh 3 a b "c d"
  17. full param is a b c d
  18. each one is
  19. a
  20. b
  21. c d
复制代码
这个意思?

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
17 [报告]
发表于 2014-09-24 15:31 |只看该作者
回复 14# Shell_HAT


    貌似调函数的时候,不用引号将$@引起来,参数有空格时展示会不正常

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
18 [报告]
发表于 2014-09-24 15:32 |只看该作者
本帖最后由 bulletmarquis 于 2014-09-24 15:34 编辑

回复 15# The_X


    单引双引傻傻分不清楚

    另外为啥这么多/啊

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
19 [报告]
发表于 2014-09-24 15:32 |只看该作者
回复 17# bulletmarquis


    是的,我只是给楼主展示语法。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
20 [报告]
发表于 2014-09-24 15:35 |只看该作者
回复 15# The_X
  1. sed -i "s#/rocketmqlogs/#/rocketmqlogs_$proName/#g" /opt/rocketmq/rocketmq_$1/conf/logback_broker.xml
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP