shell字符串切成数组(shell脚本-如何将字符串分割成数组)
shell字符串切成数组(shell脚本-如何将字符串分割成数组)
2024-07-03 03:10:21  作者:南生忆  网址:https://m.xinb2b.cn/life/ien496796.html
前言

shell编程过程中,很多时候需要操作数组,而命令返回的一般都是字符串,如何将字符串根据指定的符号进行分割呢?

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(1)

这里就需要有到一个变量IFS( Internal Field Separator,内部的域分隔符),IFS的默认值为:空白(包括:空格,tab, 和新行)

如果直接用 echo $IFS看不出来,可以将结果用ASSII码用十六进制打印出来:

echo -n "$IFS" | xxd -g 1

00000000: 20 09 0a ..

十六进制的20是32

十六进制的09是9

十六进制的0a是10

根据下面的图就可以看出来是哪个符号:

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(2)

ASCII 10进制

分割字符串

如果要以默认的这三种符号进行分割,就不需要修改变量。

例子:

#!/bin/bash

a="one two three four"

array=($a)

for s in ${array[@]}

do

echo $s

done

执行结果:

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(3)

如果是其他分割符,就需要修改这个变量。(修改的时候记得先保存一下变量,分割完就马上赋值回去,防止下面输出的格式变了)

例子:

#!/bin/bash

a="one,two,three,four"

OLD_IFS="$IFS"

IFS=","

array=($a)

IFS="$OLD_IFS"

for s in ${array[@]}

do

echo $s

done

执行结果:

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(4)

array=($a)用于将字符串$a分割到数组$array ${array[0]} ${array[1]} ... 分别存储分割后的数组第1 2 ... 项 ,${arr[@]}存储整个数组。

IFS对空格的空白的处理和其他字符不一样,左右两边的纯空白会被忽略,多个连续的空白被当成一个IFS处理。

多个符号进行分割

#!/bin/bash

a="1,,,2::3"

OLD_IFS="$IFS"

IFS=",:"

array=($a)

IFS=OLD_IFS

for s in ${array[@]}

do

echo $s

done

执行结果:

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(5)

总结

写shell脚本不好debug,很容易出错,可以使用bash -x scripts.sh 执行,来查看具体的执行步骤。shell脚本虽然方便,但是执行效率嘛。。。。。

shell字符串切成数组(shell脚本-如何将字符串分割成数组)(6)

  • 驳回执行申请文书是否需要送达:执行申请逾期
  • 2024-07-03驳回执行申请文书是否需要送达:执行申请逾期担保公司以行政机关的强制执行申请超过诉讼时效法院准予执行裁定有误为由申请检察监督检察官积极开展争议化解工作历时4年的行政处罚争议成功化解……近期,新疆维吾尔自治区乌鲁木齐市一起历时4年的行政争议终于成。
  • abmire什么意思(三星SAMSUNGB9062 怎么样 )
  • 2024-07-03三星SAMSUNGB9062 怎么样 abmire什么意思?是不是admire机器不错,如果你用得上移动3G的话,很不错的选择如果用不上移动的3G,也可以看看I9100,现在价格很实惠,下面我们就来看看abmire什么意思?我们一起去了解。
  • 蘑菇钉补胎什么价(价格一般在80-120元)
  • 2024-07-03价格一般在80-120元最近,在微博或是其他一些媒体平台,总是有人在感叹:汽车补胎是越来越贵了,动不动就几十元,尤其是蘑菇钉补胎,价格一般在80-120元为什么蘑菇钉补胎的价格这么高?就因为多个“蘑菇”么?对于蘑菇钉补胎,可。
  • 豺怎么读(豺的读音是什么)
  • 2024-07-03豺的读音是什么豺字读音为:chái豺是一个汉字,本意是指野兽名,形似犬而残猛如狼,俗名豺狗,比喻贪婪残忍的人豺的学名是Cuonalpinus,哺乳动物,有11个亚种,大小似犬而小于狼,体长85-130厘米,尾长45。
  • 得过胃炎的人不能吃什么食物(有胃炎的人要忌口)
  • 2024-07-03有胃炎的人要忌口现在的生活节奏这么快,很多人为了快速解决工作,在吃这件事上都是很随意的,三两下把饭吃完都是常事而在周末或者休息时,又毫不顾忌地暴饮暴食,这必然会对肠胃造成严重的负担有调查显示,大部分上班族都患有或轻或。
  • 为什么女明星没有私生饭(明星为什么会有)
  • 2024-07-03明星为什么会有最初,看到“私生饭”这几个字,还以为跟私生子有什么联系于是乎马上到搜狗百科,查了一下私生饭的定义什么是“私生饭”原来,“私生饭”就是偷拍明星私生活的粉丝的简称,又称“私生粉”现在就很好理解为什么明星会。
  • 百合花地栽的方法(如何地栽百合花)
  • 2024-07-03如何地栽百合花地栽的百合宜养在有充足光照、并且通风良好的位置如果夏天的光照很强烈,需要为它遮阳,以免它被晒伤在生长季可以适时浇水,让它的土壤中始终保有少量的水分在刚下雨后要暂停浇水,以免它受涝在冬天的时候,需要为它。
  • 傣族泼水节的由来传说(傣族泼水节的来历)
  • 2024-07-03傣族泼水节的来历“泼水节”傣族送旧迎新的节日每年傣历6月,公历4月中旬,庆祝3---5天有关泼水节的来历传说着不少丰富多彩的神话故事其一:远古时期,西双版纳地区有一个荒淫残暴的魔王,他接连抢走11个美丽的姑娘,后来又。
  • 长期熬夜的9大危害(会毁掉我们的身体)
  • 2024-07-03会毁掉我们的身体如今,随着生活节奏的加快,熬夜对于现代人,尤其是年轻人来说已经是常事了虽然大家都知道熬夜对身体会造成伤害,但是生活习惯的改变并没有那么简单然而,长期的熬夜,会毁掉我们的身体,如果还不改掉熬夜的坏习惯,。
  • 高大挺秀的意思是什么(高大挺秀是什么意思)
  • 2024-07-03高大挺秀是什么意思高大挺秀的意思:高大挺直,挺拔秀丽超出一般英语翻译:Tall词意高大:又高又大挺:挺拔;直秀:俊秀,秀丽总体意思:高大挺直,挺拔秀丽超出一般近义词:高大挺拔反义词:瘦弱矮小矮小丑陋造句:高大挺秀的银杏。
  • 东湖泛舟赏春光下一句 东湖评论人勤春来早
  • 2024-07-03东湖泛舟赏春光下一句 东湖评论人勤春来早在2023年春节团拜会讲话中指出,“大道至简,实干为要”“希望全国人民特别是广大青年像动如脱兔般奋跃而上、飞速奔跑,在各行各业竞展风流、尽显风采”新春伊始,万象更新,在新征程上的我们应善作善为,能大有。