当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-19 17:23 

注册: 2016-06-19 17:17
帖子: 32
系统: Ubuntu Kylin 14.04
送出感谢: 0 次
接收感谢: 0 次
如题。

代码:
arrayZ=( one two three four fiveiv ivfive )

echo ${arrayZ[@]//*/$0}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-19 17:57 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
建议详细描述问题
代码:
$ cat test
#!/bin/bash
arrayZ=( one two three four fiveiv ivfive )
echo ${arrayZ[$1]}
$ ./test 1
two
$ ./test 2
three
$ ./test 5
ivfive


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-19 22:11 

注册: 2016-06-19 17:17
帖子: 32
系统: Ubuntu Kylin 14.04
送出感谢: 0 次
接收感谢: 0 次
代码:
arrayZ=( one two three four )

echo ${arrayZ[@]//*/xx$0}
# 希望这行代码输出xxone xxtwo xxthree xxfour

谢谢


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-20 10:54 

注册: 2016-06-19 17:17
帖子: 32
系统: Ubuntu Kylin 14.04
送出感谢: 0 次
接收感谢: 0 次
在我的代码里,$0的值总是我的脚本文件的路径。

怎样才能引用*所匹配的元素?

谢谢


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-20 11:39 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
sincos2007 写道:
在我的代码里,$0的值总是我的脚本文件的路径。

可能原因 $0 代表运行脚本的命令本身
从 $1 开始,代表第一个 第二个 第三个 ... 参数
参考 http://www.tldp.org/LDP/abs/html/othertypesv.html

sincos2007 写道:
# 希望这行代码输出xxone xxtwo xxthree xxfour

代码:
#!/bin/bash
arrayZ=( one two three four fiveiv ivfive )
echo xx${arrayZ[$1]}

代码:
$ ./test 0
xxone
$ ./test 3
xxfour
$ ./test 5
xxivfive


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-20 12:15 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
sincos2007 写道:
代码:
arrayZ=( one two three four )

echo ${arrayZ[@]//*/xx$0}
# 希望这行代码输出xxone xxtwo xxthree xxfour

谢谢


你的意思大概是:
$ echo ${arrayZ[@]}| sed 's/\(two\)/xx\1/g'
one xxtwo three four

但是
${string/*/xx}
如此格式字符替换,只是bash的变量操作特性。并不支持正则表达式的后向引用,即如上 sed命令中的\1对前面括号中的匹配内容two的引用。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-20 14:16 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
代码:
echo ${arrayZ[@]/#/xx}


用 # 匹配开头,% 匹配结尾


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 怎样用$0引用数组里的元素
帖子发表于 : 2016-06-20 15:16 

注册: 2016-06-19 17:17
帖子: 32
系统: Ubuntu Kylin 14.04
送出感谢: 0 次
接收感谢: 0 次
代码:
newstr() {
    echo $1
    echo -n "!!!"
}
arrayZ=( one two three four )
echo ${arrayZ[@]//*/$(newstr $0)}
}


上面是我下载的教程里的例子,是不是作者喝多了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译