shell自定义数组元素分隔符

公司人员命名图片习惯的加上了空格,今天有个需求,要批量下载这个写图片,这下蛋疼了

正确的url 是这样的

http://url  2119 01.jpg

http://url  001.jpg

写到文本里就要加转义,变成

http://url\ 2119\ 01.jpg

http://url\ 001.jpg

结果循环的结果就蛋疼了

#!/bin/bash
pic=$(cat list.txt)

for i in $pic
do
        echo "$i"
done

结果

[[email protected] ~]# sh download.sh 
http://url211901.jpg
http://url001.jpg

全乱了

解决办法:

由于数组元素的分割符号,是由IFS 这个系统内置字段分隔符来控制的,所以脚本重写如下

#!/bin/bash
pic=$(cat list.txt)
IFSBAK=$IFS # 保存默认的IFS
IFS=$‘\n‘   #指定分隔符
for i in $pic
do
        echo "$i"
done
IFS=$IFSBAK  # 还原默认分隔符

结果输出如下:

[[email protected] ~]# sh download.sh  
http://url\ 2119\ 01.jpg
http://url\ 001.jpg

这个时候批量下载图片就没问题了

时间: 2024-10-21 17:19:14

shell自定义数组元素分隔符的相关文章

js指定分隔符连接数组元素join()

指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回一个字符串,该字符串把数组中的各个元素串起来,用<分隔符>置于元素与元素之间.这个方法不影响数组原本的内容. 我们使用join()方法,将数组的所有元素放入一个字符串中,代码如下: <script type="text/javascript"> var myarr

shell 脚本 ---数组

数组的定义:所谓数组,就是相同数据类型的元素按一定顺序的集合,就是把有限个类型相同的变量用一个名字命令,也就是说这些变量被定义成数组之后,它们就不在有自己的名字了,那么我们怎么找到各个变量或者元素呢?是通过索引或者下标(有时候也称下标变量) 数组特点: 1.数组是相同数据类型元素的集合 2.数组中的各个元素是有先后顺序的,它们在内存中按照这个先后顺序放在一起,也就是说:        数组是内存中连续的一段空间. 3.数组元素用整个数组名字和它自己在的数组中的顺序位置来表示,A[0] 表示:数组

shell之数组

数组的定义 何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念).那么shell中数组是怎么定义呢,我们来看两种数据类型:一是数值类型,二是字符串类型:虽然shell本身是弱类型的,但也可以这么区分. 数值类型的数组:一对括号表示数组,数组中元素之间使用"空格"来隔开. 举个例子 数值类型: arr_number=(1 2 3 4 5); 字符串类型:同样,使用一对括号表示数组,其中数组中的元素使用双括号或者单引号

shell脚本数组的数学运算

今天在用shell脚本写斐波那契数列计算时,一直不停的报错,主要原因是因为shell脚本实在太不智能,在进行数组运算时需要写大量的符号,很容易混淆,所以稍微总结一下数组元素的计算. 首先,有几种情况: 1 在将一个数学运算结果赋值给某普通变量时: (1) let var=算术表达式 (2) var=$[算术表达式] (3) var=$((算术表达式)) (4) var=$(expr arg1 arg2 arg3 ...) 2 在将一个数学运算结果赋值给某数组元素时: (1)let arr[$i]

C++ 运算符重载四(自定义数组类)

//自定义数组类 #include<iostream> using namespace std; //分析:能获取数组长度,添加元素,删除元素,修改元素 //要求重载[],=,==,!=运算符 class MyArray { private: int mLength; int* mSpace; public: MyArray(int length){ cout << "有参构造函数被调用了1" << endl; mLength = length; m

PHP数组元素函数的整理

php数组元素的整理   1.Count() 计算数组中元素的个数: 2.Array_values(array $input) 以索引数组的形式返回数组中所有 元素的值 只需一个数组做参数,将关联数组转化成数字索引数组: 3.Array_keys(array$array[,mixed$search_value[,bool$strict=false]]返回数组中 部分的或所有的键名,二维数组时只显示第一层的键名 4.in_array(mixed$needle,array$haystack[,boo

JS数组方法汇总 array数组元素的添加和删除

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

自定义数组列表和队列

最近一直在研究数据结构与算法,涉及到自定义数组和队列,感觉对JDK源代码的底层功能实现学习有一定的帮助,故作此总结,以供参考. ps:JDK的源代码更加复杂,我的自定义数组列表和队列只是一些简单的逻辑实现. 1.自定义数组列表(MyArrayList.java) package com.BlueStarWei.arrayList; /** * * show all fields and method,please click "ctrl + o" * * * 开发过程遇到的问题: *

shell中数组的基本使用

参考文档:<老男孩 shell编程实战> 数组 数组的概念 略 数组的操作 定义和赋值 方法一: a[1]="xianwei" a[2]="qiuyue" a[3]="duoduo" 方法二: a=(1 2 3)#注意用空格而不是逗号 方法三: a=([1]=one [2]=two [3]=three) 方法四: a=(`ls /tmp`) a=($(ls /tmp)) 输出 注意打印的格式是 ${数组名[下标]} printf &q