首页
学习
活动
专区
工具
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

    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

    73310

    4. shell 语法

    引号与双引号区别: 单引号内容会原样输出,不会执行、不会取变量; 双引号内容可以执行、可以取变量; name=lys # 不用引号 echo 'hello, $name \"hh\"'...数组可以存放多个不同类型值,只支持一维数组,初始化时不需要指明数组大小。...例如: array=(1 abc "def" lys) 也可以直接定义数组某个元素值: array[0]=1 array[1]=abc array[2]="def" array[3]=lys 读取数组某个元素值...< output.txt # 从output.txt读取字符串 echo $str # 输出结果:Hello World 同时重定向stdinstdout 创建bash脚本: #!...# 查看output.txt内容 7 4.14 引入外部脚本 类似于C/C++include操作,bash也可以引入其他文件代码。

    2.5K20

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

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

    2.5K20

    shell语法

    ,也可以使用双引号,也可以不使用引号引号引号区别(不加引号引号相同) 单引号内容会原样输出,不会执行,不会取变量(即不会转义),即没有使用&符号取值 双引号内容可以执行,可以取变量...stdout值,${}是取变量数组 数组可以存放多个不同值,只支持一位数组,初始化时不需要指定数组大小(pylist一样不需要指定数组大小) 定义 数组用小括号表示,元素之间用空格隔开...,如: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

    12210

    解释型语言-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脚本学习2

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

    18020

    一篇文章让你彻底掌握 Shell

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

    2.2K10

    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脚本语法基础

    shell即将各类命令预先放入一个文件,方便一次性执行一个程序文件,方便系统管理员来管理操作系统。目前大多数服务器使用linux操作系统,学习shell脚本,有助于简化日常服务器管理工作。...一、变量 1. shell变量声明使用 shell变量声明与python类似,有以下特点: 只能使用字母数字下划线 必须以字母或者下划线开头 不能使用shell关键字(用help命令可以查看所有保留关键字...字符串 在shell脚本定义字符串变量可以使用单引号或者双引号,也可以不使用引号,不适用引号与使用双引号基本相同。 使用单引号性能会更好,但是将不会解析字符串变量。 2....数组 bash中支持一维数组,定义数组用小括号包含以空格分隔字符串即可。数组元素下标以0开始。...,以后文章,我会将主要内容放在介绍shell脚本在日常服务器管理应用方面,欢迎关注~ 文章作者ianzhi,原文地址:https://www.dnote.cn/users/ianzhi/posts

    79010

    shell 快速入门

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

    1.9K30
    领券