免费注册 查看新帖 |

Chinaunix

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

大家帮我看个脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-20 14:17 |只看该作者 |倒序浏览
大家好,我最近在学习shell script写了一段代码,其中有一部分不知道问题处在哪里,拿到CU来请教各位大神
这段的功能是把PATH变量以“:”分段存在数组dir中
但是while中间那段老是提示有问题,但是自己在shell中运行是可以的,代码如下:

  1. n=$(echo $PATH | awk 'BEGIN {FS=":"}{print NF}')
  2. echo $n
  3. #dir record all the directories that
  4. i=1
  5. while [ "$i" -le "$n" ]
  6. do
  7.         dir[$i]=$(echo $PATH | cut -d ':' -f $i)
  8.         echo ${dir[$i]}
  9.         i=$(($i+1))
  10. done
复制代码
运行出错提示如下:

  1. oo@Z460:/tmp$ sh allcmd.sh
  2. 8
  3. allcmd.sh: 16: dir[1]=/usr/lib/lightdm/lightdm: not found
  4. allcmd.sh: 16: Bad substitution
复制代码

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
2 [报告]
发表于 2012-05-20 14:23 |只看该作者
  1. [winway@winway test]$ dir=(${PATH//:/ })
  2. [winway@winway test]$ echo ${#dir[@]}   
  3. 6
  4. [winway@winway test]$ echo ${dir[@]}   
  5. /usr/lib/qt-3.3/bin /usr/kerberos/bin /usr/local/bin /bin /usr/bin /home/winway/bin
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [报告]
发表于 2012-05-20 14:41 |只看该作者
winway1988 发表于 2012-05-20 14:23

目录带空格的话,会有问题,当然一般Unix/linux下,目录不含空格。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2012-05-20 14:44 |只看该作者
本帖最后由 rdcwayx 于 2012-05-20 14:44 编辑
  1. i=0
  2. echo $PATH|tr ":" "\n" |while read line
  3. do
  4.         dir[$i]=$line
  5.         echo ${dir[$i]}
  6.         i=$(($i+1))
  7. done
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-05-20 14:48 |只看该作者
脚本没啥问题

论坛徽章:
0
6 [报告]
发表于 2012-05-20 14:54 |只看该作者
回复 3# rdcwayx
首先谢谢你,我试了一下,这是可以的,但是我还想知道我的脚本问题出在哪里,出错提示是什么意思


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
7 [报告]
发表于 2012-05-20 15:45 |只看该作者
不清楚,脚本错误在第16行,但你贴出的代码只有10行。

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
8 [报告]
发表于 2012-05-20 18:16 |只看该作者
本帖最后由 winway1988 于 2012-05-20 18:16 编辑

[winway@winway ~]$ OIFS="$IFS"
[winway@winway ~]$ IFS=$':'
[winway@winway ~]$ dir=($PATH)
[winway@winway ~]$ echo ${#dir[@]}
6
[winway@winway ~]$ echo ${dir[@]}
/usr/lib/qt-3.3/bin /usr/kerberos/bin /usr/local/bin /bin /usr/bin /home/winway/bin
[winway@winway ~]$ IFS="$OIFS"
[winway@winway ~]$ dir=($PATH)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP