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

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


这里就需要有到一个变量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

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


ASCII 10进制

分割字符串

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

例子:

#!/bin/bash

a="one two three four"

array=($a)

for s in ${array[@]}

do

echo $s

done

执行结果:


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

例子:

#!/bin/bash

a="one,two,three,four"

OLD_IFS="$IFS"

IFS=","

array=($a)

IFS="$OLD_IFS"

for s in ${array[@]}

do

echo $s

done

执行结果:


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


  • 食道癌什么情况说明好转(首先会让你有这4个症状)
  • 2024-09-29首先会让你有这4个症状在我国,食道癌的发病率是比较高的,这与当今社会人们的饮食观念有一定的关系现在大家的经济水平提高了,饮食更加多样化,因此食道、消化道方面的疾病大家都并不陌生了食道癌就是常见的一种疾病,会给患者带来极大的。
  • 济宁市湿地公园有哪些地方(大美湿地城市济宁)
  • 2024-09-29大美湿地城市济宁素有“孔孟之乡、运河之都”之称的山东省济宁市有穿城而过的京杭大运河境内河流纵横,湖泊密布是山东省湿地资源较为丰富的地区之一↑请点击视频观看↑↑山东省济宁市泗河湿地景色↑山东省济宁市太白湖湿地景色202。
  • 关东煮是什么东西(关东煮介绍)
  • 2024-09-29关东煮介绍关东煮是日本人喜爱的小吃,本名御田,是一种源自日本关东地区的料理通常材料包括鸡蛋、萝卜、土豆、海带、蒟蒻、鱼丸、竹轮(鱼肉或豆的制品)等,将这些材料每一种都分别放在互不相通的铁格子锅(箱)里,用海带木。
  • 快递逆袭之路完整版(时空送货人痞子的逆袭)
  • 2024-09-29时空送货人痞子的逆袭笔者是被这部剧的名字吸引着去看的《时空送货人》,妥妥的科幻嘛!确实,时间定在2045年未来世界里江奇霖饰演的王晓明一觉睡醒,发现自己出现在沙漠,一脸懵懂而有人告诉他:我是你未来的师父,你是我的继承人懵。
  • 汽车带t与l有什么区别(汽车带T和带)
  • 2024-09-29汽车带T和带至于汽车,我相信有车的人想要一辆好车,而没有车的人想要一辆车现在越来越多没有车的人正试图省钱买车现在汽车使用的技术非常成熟,甚至一些国内好的汽车品牌也非常可靠目前,汽车发动机技术在不断更新除了日本汽车。
  • 戴尔新显示器34寸16.9(戴尔注册P3424WE显示器)
  • 2024-09-29戴尔注册P3424WE显示器IT之家11月15日消息,戴尔现已注册一款P3424WE显示器,从型号上来看将是现款P3421W的升级版现款P3421WIT之家了解到,戴尔现款P3421W采用了34英寸IPS面板,3800R曲率,3。
  • 520该怎么拍(520郑州人如何花式秀恩爱)
  • 2024-09-29520郑州人如何花式秀恩爱【大河报·大河财立方】(记者吴海舒丁洋涛文图)520网络情人节,年轻人都如何表达爱意?5月20日下午,大河报·大河财立方记者走访发现,送花、吃吃喝喝依然是主流,有鲜花店销量是平时三倍以上,闪送平台上郑。
  • 环境优美风景如画(环境雪润大地)
  • 2024-09-29环境雪润大地近日,受冷空气影响,我国多地迎来降雪天气1月15日,游客在重庆市北碚区缙云山欣赏雪景(无人机照片)新华社发(秦廷富摄)这是1月15日拍摄的贵州省遵义市正安县山区雪景(无人机照片)新华社发(赵永章摄)1。
  • 红米note8pro怎样扬声器除尘(8扬声器声波除尘体验)
  • 2024-09-298扬声器声波除尘体验相信大家应该都知道红米新机RedmiNote8搭载了1217超线性扬声器设计,除了具备大音量、好音质的亮点外,还具备了一个隐藏技能:扬声器声波除尘那么,RedmiNote8这个所谓的“扬声器声波除尘”。
  • 家庭储存中药方法(家庭怎么储存中药)
  • 2024-09-29家庭怎么储存中药一般家庭在贮存中药时,要将中药贮存在干燥、通风的环境中当季节改变、温度升高后,要控制好室内的温度,防止药物出现脂化改变,如生地黄,在温度升高时可能改为沙藏对于易发生气味散失的中药,要将其密封起来,并保。
  • 上海郊区的古镇哪个比较值得去(上海市八个免费的古镇)
  • 2024-09-29上海市八个免费的古镇上海,是一座国际大都市,却也是一座有着古典美的城市!在这里,动静皆宜,海纳百川,有容乃大!因为历史的原因,上海素来与江苏有着深厚的历史渊源!如果你仔细观察,就会发现上海的水乡古镇与江浙地区的水乡古镇,。
  • 剪纸由来20个字(剪纸剪纸的由来)
  • 2024-09-29剪纸剪纸的由来我国的“剪纸”是一种用剪刀将纸剪成各种装饰图案的传统民间艺术最早起源于汉朝,在汉、唐时期,在当时的民间妇女就有使用金银箔和彩帛剪成花鸟贴在鬓角为饰的风尚再后来剪纸逐渐在春节等节日期间被广泛使用,大家将。