当前位置: 首页 > news >正文

网站 优化手机版济南seo排名优化推广

网站 优化手机版,济南seo排名优化推广,商务部网站建设情况汇报,本网站只做信息展示一、 Linux shell 脚本编程中的数组概述 数组是一种常见的数据结构。跟大多数编程语言一样,大多数Linux shell脚本支持数组,但对数组的支持程度各不相同,比如数组的维度,是支持一维数组还是多维数组?再如,…

一、 Linux shell 脚本编程中的数组概述

数组是一种常见的数据结构。跟大多数编程语言一样,大多数Linux shell脚本支持数组,但对数组的支持程度各不相同,比如数组的维度,是支持一维数组还是多维数组?再如,数组元素的下标是从 0 开始还是从1开始?则因shell而异,下面我们以zsh、sh、bash为例来讲解。

二、数组的定义

在Linux shell脚本编程中,定义数组有两种方法。

(一)数组名=(数值1 数值2 …… 数值n)

数值之间用空格间隔。

实例:

1.在zsh中

(1)在命令行定义

# csdn @ edu in ~ [21:37:32] 
$ a=(1 'a' b)

# csdn @ edu in ~ [21:37:42] 
$ echo $a
1 a b

我们首先用命令 a=(1 'a' b) 定义了数组a

然后用命令  echo $a 显示数组a 的元素。

(2)在脚本文件中定义

# csdn @ edu in ~ [22:20:47] C:1
$ echo 'a=(1 'a' b)' > a.sh 

# csdn @ edu in ~ [22:21:31] 
$ echo 'echo $a' >> a.sh

# csdn @ edu in ~ [22:21:48] 
$ cat a.sh
a=(1 a b)
echo $a

# csdn @ edu in ~ [22:21:51] 
$ source ./a.sh
1 a b

# csdn @ edu in ~ [22:22:01] 

在上面的实例中,我们首先使用使用echo + 输出重定向方式将数组定义语句 echo 'a=(1 'a' b)' > a.sh  写入脚本文件 a.sh

然后 将 显示数组a元素的命令 echo 'echo $a' >> a.sh 写入脚本文件 a.sh

接下来我们使用cat命令查看脚本文件 a.sh的内容:

a=(1 a b)
echo $a

最后,我们使用命令 source ./a.sh  执行脚本文件a.sh。

注意,在上面创建的脚本文件 a.sh中,我们没有在第一行写入shebang或hashbang语句来指定脚本解释器。

2.在sh中

 (1)在命令行定义

[csdn ~]$ exec sh
sh-4.2$ a=(1 'a' b)
sh-4.2$ echo $a
1
sh-4.2$ 

(2)在脚本文件中定义

sh-4.2$ echo 'a=(1 'a' b)' > a.sh
sh-4.2$ echo 'echo $a' >> a.sh
sh-4.2$ cat a.sh
a=(1 a b)
echo $a
sh-4.2$ . a.sh
sh: .: a.sh: file not found
sh-4.2$ source ./a.sh
1
sh-4.2$ 

3.在bash中

 (1)在命令行定义

# csdn @ edu in ~ [23:27:45] C:127
$ exec bash
[csdn ~]$ echo $0
bash
[csdn ~]$ a=(1 'a' b)
[csdn ~]$ echo $a
1
[csdn ~]$ 

在bash中,数组同样创建起来了,与上面不同的是,命令  echo $a 只显示了数组中的第1个元素,而不是所有元素。 

 (2)在脚本文件中定义

[csdn ~]$ echo 'a=(1 'a' b)' > a.sh
[csdn ~]$ echo 'echo $a' >> a.sh
[csdn ~]$ cat a.sh
a=(1 a b)
echo $a
[csdn ~]$ . a.sh
1
[csdn ~]$ 

与上面的在命令行定义数组一样,bash中的命令  echo $a 只显示了数组中的第1个元素,而不是所有元素。 

(二)数组名[下标]=数值

1.在zsh中

(1)在命令行定义

csdn @edu in ~ b[0]=0
zsh: b: assignment to invalid subscript range
csdn @edu in ~ b[1]=1 
csdn @edu in ~ b[2]=a 
csdn @edu in ~ echo $b
1 a
csdn @edu in ~ 

在上面的例子中,我们首先尝试直接在命令行定义数组元素:b[0]=0,但是zsh提示下标超出范围。

接下来,我们的命令  b[1]=1 和  b[2]=a 顺利完成,最后我们用命令 echo $b 显示 数组b的2个元素值:1 a。

可见,在zsh中,数组元素的下标是从1开始的。

(2)在脚本文件中定义

$ echo 'b[0]=0' > b.sh

# csdn @ edu in ~ [22:07:01] 
$ echo 'b[1]=1' >> b.sh

# csdn @ edu in ~ [22:07:24] 
$ echo 'b[2]=a' >> b.sh 

# csdn @ edu in ~ [22:07:39] 
$ echo 'echo $b' >> b.sh 

# csdn @ edu in ~ [22:08:05] 
$ cat b.sh   
b[0]=0
b[1]=1
b[2]=a
echo $b

# csdn @ edu in ~ [22:08:17] 
$ source ./b.sh
./b.sh:1: b: assignment to invalid subscript range

# csdn @ edu in ~ [22:08:27] C:126
$ bash ./b.sh  
0

# csdn @ edu in ~ [22:08:53] 

接着我们使用echo + 输出重定向方式将数组定义语句

b[0]=0
b[1]=1
b[2]=a

 写入脚本文件b.sh

然后 我们将 显示数组元素 的命令 echo 'echo $b' >> b.sh 写入脚本文件b.sh

随后我们使用命令 cat b.sh    查看脚本文件b.sh 的内容:

b[0]=0
b[1]=1
b[2]=a
echo $b

接下来我们使用命令 source ./b.sh 来执行脚本文件b.sh,但是命令在zsh下出错了:

./b.sh:1: b: assignment to invalid subscript range

这再次说明,在zsh中,数组元素的下标是从1开始的。

最后我们使用命令 bash ./b.sh  来执行脚本,命令顺利完成。

可见,在bash 中,数组元素的下标是从0开始的。

2.在sh中

(1)在命令行中定义 

csdn @edu in ~ exec sh
sh-4.2$ b[0]=0
sh-4.2$ b[1]=1
sh-4.2$ b[2]=a
sh-4.2$ echo $b
0
sh-4.2$ 

数组成功创建,但只看到了数组中的第1个元素值。

(2)在脚本文件中定义

sh-4.2$ echo 'b[0]=0' > b.sh
sh-4.2$ echo 'b[1]=1' >> b.sh
sh-4.2$ echo 'b[2]=a' >> b.sh 
sh-4.2$ echo 'echo $b' >> b.sh
sh-4.2$ cat b.sh
b[0]=0
b[1]=1
echo $b
sh-4.2$ source ./b.sh
0
sh-4.2$ 

我们先使用echo + 输出重定向方式将数组定义语句

b[0]=0
b[1]=1
b[2]=a

 写入脚本文件b.sh

然后 我们将 显示数组元素 的命令 echo 'echo $b' >> b.sh 写入脚本文件b.sh

随后我们使用命令 cat b.sh    查看脚本文件b.sh 的内容:

b[0]=0
b[1]=1
b[2]=a
echo $b

最后我们使用   source ./b. sh 命令来执行脚本文件b.sh,数组成功创建,但只看到了数组中的第1个元素值。

3.在bash中

(1)在命令行中定义

# csdn @ edu in ~ [23:53:42] 
$ exec bash
[csdn ~]$ echo $0
bash
[csdn ~]$ b[0]=0
[csdn ~]$ b[1]=1
[csdn ~]$ b[2]=a
[csdn ~]$ echo $b
0
[csdn ~]$ 

命令全部顺利执行,可见在bash中,数组元素的下标是从0开始的,但echo $b只显示了数组第1个元素值。

(2)在脚本文件中定义

[csdn ~]$ echo b[0]=0 > b.sh
[csdn ~]$ echo b[1]=1 >> b.sh
[csdn ~]$ echo b[2]=a >> b.sh
[csdn ~]$ echo 'echo $b' >> b.sh
[csdn ~]$ cat b.sh
b[0]=0
b[1]=1
b[2]=a
echo $b
[csdn ~]$ . b.sh
0
[csdn ~]$ 

在脚本文件中执行跟 命令行执行结果是一样的。

(三)小结

在zsh中,数组元素的下标是从 1 开始的,使用“$数组名” 可以获得数组所有元素值。

在sh和bash中,数组元素的下标是从 0 开始的,使用“$数组名” 只能获得数组第1个元素值。

三、获取所有的数组元素

通过上面的实例,我们发现在sh和bash中,使用“$数组名” 只能获得数组第1个元素值,那么如何获取所有的数组元素呢?我们可以使用* 或 @ 作为下标来获取,具体格式即:

${数组名[@]} 

${数组名[*]}

(一)zsh中

# csdn @ edu in ~ [12:24:50] 
$ echo $0
/bin/zsh

# csdn @ edu in ~ [12:25:24] 
$ a=(1 2 'a')

# csdn @ edu in ~ [12:25:42] 
$ echo $a
1 2 a

# csdn @ edu in ~ [12:27:06] 
$ echo ${a[@]}
1 2 a

# csdn @ edu in ~ [12:27:39] 
$ echo ${a[*]} 
1 2 a

# csdn @ edu in ~ [12:32:40] 

(二)在sh中

# csdn @ edu in ~ [12:32:40] 
$ exec sh
sh-4.2$ a=(1 2 'a')
sh-4.2$ echo $a
1
sh-4.2$ echo ${a[@]}
1 2 a
sh-4.2$ echo ${a[*]}
1 2 a
sh-4.2$ 

(三)在bash中

sh-4.2$ exec bash
[csdn ~]$ a=(1 2 'a')
[csdn ~]$ echo $a
1
[csdn ~]$ echo ${a[@]}
1 2 a
[csdn ~]$ echo ${a[*]}
1 2 a
[csdn ~]$ 

四、获取数组或数组元素的长度

在介绍字符串时,我们说过获取字符串的格式是:${#字符串名},获取数组或数组元素长度的格式是相似的:

${#数组名[下标]}

${#数组名[下标]}

如果要取数组的长度,那么下标就用*或 @。如果要取数组某个元素的长度,那么下标就用元素的下标。

(一)在zsh中

# csdn @ edu in ~ [12:57:21] 
$ echo $0
/bin/zsh

# csdn @ edu in ~ [12:57:24] 
$ b[1]=1 

# csdn @ edu in ~ [12:57:31] 
$ b[2]=22 

# csdn @ edu in ~ [12:57:36] 
$ echo ${b[*]}
1 22

# csdn @ edu in ~ [12:57:49] 
$ echo ${#b[*]}
2

# csdn @ edu in ~ [12:57:55] 
$ echo ${#b[@]}
2

# csdn @ edu in ~ [12:57:59] 
$ echo ${b[0]} 


# csdn @ edu in ~ [12:58:07] 
$ echo ${#b[0]}
0

# csdn @ edu in ~ [12:58:11] 
$ echo ${b[1]} 
1

# csdn @ edu in ~ [12:58:26] 
$ echo ${#b[1]}
1

# csdn @ edu in ~ [12:58:30] 
$ echo ${b[2]} 
22

# csdn @ edu in ~ [12:58:35] 
$ echo ${#b[2]}
2

(二)sh中

# csdn @ edu in ~ [13:07:28] 
$ exec sh
sh-4.2$ b[1]=1
sh-4.2$ b[2]=22
sh-4.2$ echo ${b[*]}
1 22
sh-4.2$ echo ${#b[*]}
2
sh-4.2$ echo ${#b[@]}
2
sh-4.2$ echo ${b[0]}

sh-4.2$ echo ${#b[0]}
0
sh-4.2$ echo ${b[1]}
1
sh-4.2$ echo ${#b[1]}
1
sh-4.2$ echo ${b[2]}
22
sh-4.2$ echo ${#b[2]}
2
sh-4.2$ 

(三)bash中

[csdn ~]$ b[1]=1
[csdn ~]$ b[2]=22
[csdn ~]$ echo ${b[@]}
1 22
[csdn ~]$ echo ${#b[@]}
2
[csdn ~]$ echo ${#b[*]}
2
[csdn ~]$ echo ${b[0]}

[csdn ~]$ echo ${#b[0]}
0
[csdn ~]$ echo ${b[1]}
1
[csdn ~]$ echo ${#b[1]}
1
[csdn ~]$ echo ${b[2]}
22
[csdn ~]$ echo ${#b[2]}
2
[csdn ~]$ 

在上面的实例中,由于zsh中数组元素下标是从1开始的,所以我们定义数组b时,是从下标为1 的元素开始的。

然后我们先获取整个数组的元素值和长度,然后从下标0开始获取数组每个元素的值和长度。

值得注意的是,我们使用命令 echo ${b[0]} 尝试显示数组b中下标为0 的元素值 时,系统没有提示出错;使用命令echo ${#b[0]}尝试显示数组b中下标为0 的元素的长度时,系统反馈为0。


文章转载自:
http://topmast.c7496.cn
http://cany.c7496.cn
http://hotpress.c7496.cn
http://crossbar.c7496.cn
http://consortion.c7496.cn
http://supersensible.c7496.cn
http://iniquitous.c7496.cn
http://estaminet.c7496.cn
http://akee.c7496.cn
http://eminent.c7496.cn
http://seltzogene.c7496.cn
http://panentheism.c7496.cn
http://bmv.c7496.cn
http://vivat.c7496.cn
http://lustra.c7496.cn
http://bactrian.c7496.cn
http://lyceum.c7496.cn
http://confabulator.c7496.cn
http://peptogen.c7496.cn
http://leatheroid.c7496.cn
http://leady.c7496.cn
http://rhodolite.c7496.cn
http://mandean.c7496.cn
http://iconolatrous.c7496.cn
http://antiterrorist.c7496.cn
http://hogpen.c7496.cn
http://infected.c7496.cn
http://escapism.c7496.cn
http://chloronaphthalene.c7496.cn
http://chainlet.c7496.cn
http://cestode.c7496.cn
http://copita.c7496.cn
http://waterscape.c7496.cn
http://misfortune.c7496.cn
http://regeneratress.c7496.cn
http://cabaret.c7496.cn
http://notchwing.c7496.cn
http://shouldna.c7496.cn
http://lupulin.c7496.cn
http://paperback.c7496.cn
http://amphipathic.c7496.cn
http://extrication.c7496.cn
http://hemicellulose.c7496.cn
http://frigga.c7496.cn
http://clavier.c7496.cn
http://hurtfully.c7496.cn
http://defeat.c7496.cn
http://subito.c7496.cn
http://showery.c7496.cn
http://leftism.c7496.cn
http://porphobilinogen.c7496.cn
http://fortuitist.c7496.cn
http://chowtime.c7496.cn
http://berline.c7496.cn
http://gramarye.c7496.cn
http://bioinorganic.c7496.cn
http://familistic.c7496.cn
http://twigged.c7496.cn
http://mandora.c7496.cn
http://wear.c7496.cn
http://quilimane.c7496.cn
http://soldo.c7496.cn
http://eurygnathous.c7496.cn
http://hyperpiesia.c7496.cn
http://imbibition.c7496.cn
http://xanthinuria.c7496.cn
http://peri.c7496.cn
http://coagulatory.c7496.cn
http://mayoress.c7496.cn
http://berwick.c7496.cn
http://enrollment.c7496.cn
http://wafery.c7496.cn
http://irrelievable.c7496.cn
http://grisgris.c7496.cn
http://overcrust.c7496.cn
http://by.c7496.cn
http://hermaphrodite.c7496.cn
http://revelational.c7496.cn
http://opercula.c7496.cn
http://agalite.c7496.cn
http://flirt.c7496.cn
http://readvance.c7496.cn
http://lipectomy.c7496.cn
http://foretooth.c7496.cn
http://cacti.c7496.cn
http://quantifiable.c7496.cn
http://subsultory.c7496.cn
http://except.c7496.cn
http://dipper.c7496.cn
http://purgation.c7496.cn
http://antithrombotic.c7496.cn
http://hypertonic.c7496.cn
http://almah.c7496.cn
http://reprography.c7496.cn
http://hurt.c7496.cn
http://wandsworth.c7496.cn
http://watchfully.c7496.cn
http://exclamation.c7496.cn
http://interdominion.c7496.cn
http://cestus.c7496.cn
http://www.zhongyajixie.com/news/84846.html

相关文章:

  • 淘宝客如何做淘宝客网站推广哪家建设公司网站
  • 个人网站设计作品免费做做网站
  • seo百度网站排名软件搜索引擎排名竞价
  • 有什么好的做家常菜的网站谷歌浏览器安卓下载
  • 上海做運動网站的公司seo排名优化代理
  • 英文版网站案例百度seo网站优化服务
  • 深圳app网站建设百度推广费用可以退吗
  • 网站开发需要准备什么软件短视频seo公司
  • 做问卷网站好百度搜索简洁版网址
  • 外部网站可以做链接到淘宝吗搜索引擎广告的优缺点
  • 怎样用代码制作网站百度首页排名优化平台
  • wordpress做的网站吗数据分析网
  • python做的大型网站抚顺seo
  • 网站开发天津今日广州新闻最新消息
  • 泉州公司网站模板建站搜索推广竞价托管哪家好
  • 佛山市建设局网站福州seo经理招聘
  • 天津做网站公司哪家好关键词快速排名seo怎么优化
  • 什么是网站外链百度推广账号登陆入口
  • 怎么做网站里的悬浮窗口百度做网站推广的费用
  • 重庆网站建设公司名单小说网站排名人气
  • 做电商网站注意什么恩城seo的网站
  • 网站模板样式蜂蜜网络营销推广方案
  • 马鞍山 做网站电商网页
  • 南阳疫情最新情况seo全称是什么
  • 网站绿色色调设计seo查询系统源码
  • 企业首次建设网站方案流程线上培训机构
  • 专题网站策划书什么文案容易上热门
  • 上传文件到网站根目录山西疫情最新情况
  • 网站建设的目的及目标暴疯团队seo课程
  • 公司网站建设论文结束语中国的搜索引擎有哪些