首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将带引号和未带引号的内容混合到bash数组中读取文件,保留引号

的方法是使用双引号将每个元素括起来,并使用反斜杠对引号进行转义,以保留引号在数组中的原始形式。

以下是一个示例的bash脚本,演示了如何将带引号和未带引号的内容混合到数组中,并保留引号:

代码语言:bash
复制
#!/bin/bash

# 读取文件内容到数组
readarray -t lines < file.txt

# 定义一个空数组
mixed_array=()

# 遍历每一行内容
for line in "${lines[@]}"; do
  # 检查行中是否包含引号
  if [[ $line == *\"* ]]; then
    # 如果包含引号,则将整行添加到数组中
    mixed_array+=("$line")
  else
    # 如果不包含引号,则将每个单词添加到数组中,并保留引号
    words=($line)
    for word in "${words[@]}"; do
      mixed_array+=("\"$word\"")
    done
  fi
done

# 打印数组内容
for element in "${mixed_array[@]}"; do
  echo "$element"
done

在上述示例中,假设要读取的文件为file.txt,文件内容如下:

代码语言:txt
复制
"Hello" world
This is a "test"

脚本首先使用readarray命令将文件内容读取到名为lines的数组中。然后,通过遍历每一行内容,检查是否包含引号。如果包含引号,则将整行添加到mixed_array数组中。如果不包含引号,则将每个单词添加到数组中,并在添加时保留引号。

最后,脚本打印出mixed_array数组中的所有元素,每个元素占一行。

请注意,上述示例中没有提及任何特定的云计算品牌商或产品。如果需要了解腾讯云相关产品和产品介绍,建议访问腾讯云官方网站或咨询腾讯云的技术支持团队。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux命令(二)——shell编程

echo加了-e默认会换行 echo arg > myfile #显示结果重定向至文件,会生成myfile文件 注意,echo后单引号和双引号作用是不同的。单引号不能转义里面的字符。...shell 中编写 #新建文件 vim var.sh #输入内容 #!...字符串和数组 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。...数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。...读取数组: echo ${array_name[2]} #读取下标为2的元素 echo ${array_name[*]} #读取所有元素 echo ${array_name[@]} #读取所有元素 echo

3.8K20

shell基础教程1-变量、字符串、数组、注释

Shell 数组 6.1. 定义数组 6.2. 读取数组 6.3. 获取数组的长度 7. `Shell` 注释 7.1. 单行注释 7.2. 多行注释 8....同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 中间不能有空格,可以使用下划线(_) 不能使用标点符号 不能使用bash里的关键字(可用help命令查看保留关键字...单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行...读取数组 读取数组元素值的一般格式是: ${数组名[下标]} 例如: valuen=${array_name[n]} 使用 @ 符号可以获取数组中的所有元素, 例如: echo ${array_name...多行注释 多行注释还可以使用以下格式: :<<EOF 注释内容... 注释内容... 注释内容... EOF EOF 也可以使用其他符号: 单引号(') 和 感叹号(!) :<<' 注释内容...

1.8K20
  • Shell 编程语法基础

    2.4 拼接字符串 3 Shell 数组 3.1 定义数组 3.2 读取数组 3.3 获取数组的长度 4 Shell 传递参数 5 Shell 基本运算符 5.1 算术运算符 5.2 关系运算符 5.3...不能使用bash里的关键字(可用help命令查看保留关键字)。 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可(推荐给所有变量加上花括号,这是一个好的编程习惯),如: !...单引号与双引号字符串 单引号字符串限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用...值n) 读取数组 读取数组元素值的一般格式是: ${数组名[下表标]} 使用 @ 符号可以获取数组中的所有元素,例如: echo ${array_name[@]} 获取数组的长度 获取数组长度的方法与获取字符串长度的方法相同...-p file : 文件存在并且是一个命名管道(FIFO)。 -r file : 文件存在并且是可读的。 -s file : 文件存在并且有内容。

    2.3K10

    Shell 编程入门 (转载非原创)

    不能使用bash里的关键字(可用help命令查看保留关键字)。 2、 使用 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: content="hello world!"...1、单引号 str='this is a string' echo '$str' # $str 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号...[n]="valuen" 2、 读取数组 读取数组元素值的一般格式是: value=${array_name[n]} 使用 @ 符号可以获取数组中的所有元素,例如: echo ${array_name[...echo ${loop} done # value0 # value1 # value2 # value3 3、 while 循环 while 循环用于不断执行一系列命令,也用于从输入文件中读取数据.../test.file 2、 输入重定向 从用户文件中的内容输出到命令行。 $ wc -l < .

    1.7K21

    简单&基础shell操作_转发分享

    5, 不能使用bash里的关键字(可用help命令查看保留关键字)。...image Shell中的字符串 单引号的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。...: 例如:当一个路径为 /home/xiaoming/1.txt时,如何怎么它的路径(不带文件) 和如何得到它的文件名??...复制代码 Shell的数组: bash支持一维数组, 不支持多维数组, 它的下标从0开始编号. 用下标[n] 获取数组元素; 定义数组: 在shell中用括号表示数组,元素用空格分开。...[index]} 读取数组的全部元素,用@或* ${array_name[*]} ${array_name[@]} 获取数组的信息: 取得数组元素的个数: length=${#array_name

    1.1K10

    Shell 变量

    同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。...单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。...---- Shell 数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。 类似与C语言,数组元素的下标由0开始编号。...获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。 定义数组 在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。...读取数组 读取数组元素值的一般格式是: ${数组名[下标]} 例如: valuen=${array_name[n]} 使用@符号可以获取数组中的所有元素,例如: echo ${array_name[@]

    2.1K40

    Shell编程

    不能使用bash里的关键字(可用help命令查看保留关键字)。 有效的 Shell 变量名示例如下: RUNOOB LD_LIBRARY_PATH _var var2 无效的变量命名: ?...,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。...遍历 根目录 下的内容 for f in `ls /`; do echo $f done 3 while 语句 while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件...数组 1 定义数组 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(。 与大部分编程语言类似,数组元素的下标由0开始。...[2]=value2 2 读取数组 读取数组元素值的一般格式是: ${array_name[index]} 2.1 实例 #!

    5K11

    Shell入门

    /bin/bash。 #! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。 hello world #!/bin/bash echo hello world!...单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行...数组 在 Shell 中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为: 数组名=(值1 值2 ......${数组名[下标]} 如 valuen=${array_name[n]} 使用 @ 符号可以获取数组中的所有元素,例如: echo ${array_name[@]} 获取数组长度 length.../bin/bash echo "please input name and your age:" read name age #读取键盘输入字符串,赋值给变量 name 和 age echo "your

    74210

    Shell脚本攻略01-简介终端打印

    概述  终端打印  玩转变量与环境变量  使用函数填加环境变量  通过shell进行数学运算  玩转文件描述符与重定向  数组和关联数组  使用别名  获取终端信息.../表示当前目录 或者 $ /home/path/script.sh #使用脚本的完整路径 内核会读取脚本的首行并注意到shebang为#!/bin/bash。...这组命令来自位于用户主目录中的脚本文件~/.bashrc(对于登录shell则是~/.bash_profile)。...在终端中打印文本是绝大多数shell脚本和工具日常需要执行的基本任务。...因此,任何Name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10个字符,余下的则以空格符填充。 对于浮点数,可以使用其他参数对小数部分进行舍入。

    2.5K20

    shell语法

    ,也可以使用双引号,也可以不使用引号 单引号和双引号的区别(不加引号和双引号相同) 单引号中的内容会原样输出,不会执行,不会取变量(即不会转义),即没有使用&符号取值 双引号中的内容可以执行,可以取变量...stdout的值,${}是取变量的值 数组 数组中可以存放多个不同的值,只支持一位数组,初始化时不需要指定数组大小(和py中的list一样不需要指定数组大小) 定义 数组用小括号表示,元素之间用空格隔开...,如:array=(1 abc “def” yxc) 也可以直接定义数组中某个元素的值,如:array[0]=1,array[1]=abc,array[2]=”def” 读取数组中某个元素的值 格式:$...{array[index]} echo ${array[0]} 读取整个数组 格式:(@和*都是取所有的意思) $(array[@]) $(array[*]) expr命令 格式:expr 表达式 ##...\n(此时无需-e进行转义) 文件逻辑运算符 |与&单与和单或是expr中的(必须在expr中使用) 而||与&&双与和双或是bash中自带的,可以直接在bash中使用 也带有短路特性 表达式中的exit

    12710

    解释型语言-shell

    六、字符串&数组 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。...: 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。...array_name=(value0 value1 value2 value3) 读取数组元素值的一般格式是:${array_name[index]} 取得数组元素的个数: length=${#array_name...输出重定向: 输出到显示器的内容被重定向到文件:$ command > file 在显示器上不会看到任何输出:$ who > users 不希望文件内容被覆盖,可以使用>>追加到文件末尾 $ echo...输入重定向: 本来需要从键盘获取输入的命令会转移到文件读取内容:command < file 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null:$ command

    1.5K31

    shell极简教程(二)

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。.../root/.bash_profile /root/.bashrc 十,while循环 while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。...> users $ cat users line 1 line 2 输入重定向   和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command < file   这样,本来需要从键盘获取输入的命令会转移到文件读取内容...:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。...但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null: $ command > /dev/null   /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容

    5.3K70

    一篇文章让你彻底掌握 Shell

    /path/to/script.sh 上面的例子中, script.sh 是一个包含 shell 解释器可以识别并执行的命令的普通文本文件, sh 和 bash 是 shell 解释器程序。...不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。 # 声明变量 访问变量的语法形式为: {var} 和 var 。...{colors[@]} 将数组中的每个元素扩展为一个单独的参数;数组元素中的空格得以保留。...因此,如果输入 可能 包含空格,务必要用引号把表达式包起来。 # 流和重定向 Bash 有很强大的工具来处理程序之间的协同工作。...dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。

    2.2K10

    Shell脚本学习2

    (除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。...单双引号的区别: 双引号里可以有变量,单引号则原样输出; 双引号里可以出现转义字符,单引号则原样输出; 单引号字串中不能出现单引号。 拼接字符串 #!...index STRING CHARS #在STRING中查找字符CHARS首次出现的位置,没有找到返回0 length STRING #字符串长度 数组 bash...支持一维数组(不支持多维数组),并且没有限定数组的大小,数组元素的下标由0开始编号 获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。.../bin/bash for FILE in * do echo $FILE done 遍历文件内容: #!

    18420

    shell 教程,这次我要步步详解,学会了以后能早点下班

    这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。 以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。...下面的代码中,使用 cat 命令将 log.txt 的内容读取出来,并赋值给一个变量,然后使用 echo 命令输出。...shell 有一些内置的变量,混个眼熟: $0:当前脚本的文件名 $num:位置参数。..." exit fi while read -r line #从file文件中读取文件内容赋值给line #(使用参数r会屏蔽文本中的特殊符号,只做输出不做转译) do echo $line...#输出文件内容 done < $file 示例2:按列读取文件内容 #!

    4.2K20

    shell 快速入门

    在 [] 表示普通字符,没有通配功效 # 引号 # 02_转义和引用.sh 中介绍过,主要有单引号,双引号,反引号 # 注释符号 # 大括号 # 大括号 {} 在 Shell 中的用法很多 # 1...IO 重定向符号 # > 标准输出覆盖重定向,将命令的标准输出重定向到其他文件中,会直接覆盖原文件内容 # >> 标准输出追加重定向,将命令的标准输出重定向到其他文件中,不会覆盖文件,会在文件后面追加...# >& 标识输出重定向,讲一个标识的输出重定向到另一个标识的输入 # 文件中读取输入,而不是从键盘中读取输入 # | 管道,从一个命令中读取输出,作为另一个命令的输入...# exec 文件中的内容作为 exec 的标准输入 # exec > file 将 file 文件作为标准输出 # exec 3文件标识符 # exec 3.../bin/bash # 字符处理 # 管道 # 从一个命令中读取输出,作为另一个命令的输入 # 示例 # ls | grep .sh | cut -f1 -d'.

    1.9K30

    sh脚本

    单引号 Bash 允许字符串放在单引号或双引号之中,加以引用。 单引号用于保留字符的字面含义,各种特殊字符在单引号里面,都会变为普通字符,比如星号(*)、美元符号($)、反斜杠(\)等。...$ echo "it's" it's 双引号 双引号比单引号宽松,可以保留大部分特殊字符的本来含义,但是三个字符除外:美元符号($)、反引号(`)和反斜杠(\)。...) contains $(echo -n $i | wc -c) characters" done 上面例子中,cat ~/.bash_profile命令会输出~/.bash_profile文件的内容,...该数组的0号成员是当前调用的函数,1号成员是调用当前函数的函数,以此类推。 BASH_SOURCE 变量BASH_SOURCE返回一个数组,内容是当前的脚本调用堆栈。...BASH_LINENO 变量BASH_LINENO返回一个数组,内容是每一轮调用对应的行号。

    10.8K30
    领券