前言
在shell编程过程中,经常需要操作数组,命令返回的通常是字符串。如何根据指定的符号分割字符串?
这需要Internal Field Separator(IFS)变量。IFS的默认值为空格(包括空格、制表符和新行)
如果无法以Echo $IFS直接查看,则可以用ASSII代码以十六进制格式打印结果。
Echo -n '$IFS' | xxd -g 1
00000003360 20 090a……。
十六进制数20是32
十六进制数字09是9
十六进制0a是10
根据下图可以知道是什么符号
ASCII十进制数
分割字符串
如果要将其拆分为三个基本符号,则无需修改变量。
例子:
#!/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 执行,来查看具体的执行步骤。shell脚本虽然方便,但是执行效率嘛。。。。。
1.文章《如何输出一个字符数组 如何输出多个字符…》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《如何输出一个字符数组 如何输出多个字符…》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好