美文网首页
bash处理多行字符串变量

bash处理多行字符串变量

作者: CodingCode | 来源:发表于2021-06-27 02:40 被阅读0次
  1. 读入多行字符串到变量
#!/bin/bash

read -r -d '' VAR <<EOM
aa
bb
cc
EOM

echo VAR="[$VAR]"

运行结果:

VAR=[aa
bb
cc]
  1. 读入多行字符串到数组变量
#!/bin/bash

read -r -d '' -a VAR <<EOM
aa
bb
cc
EOM

echo LEN="[${#VAR[@]}]"
for VAR in "${VAR[@]}"; do
    echo "VAR=[${VAR}]"
done

运行结果:

LEN=[3]
VAR=[aa]
VAR=[bb]
VAR=[cc]

2.2 如何把多行变量转出数组

#!/bin/bash

read -r -d '' VAR <<EOM
aa
bb
cc
EOM
read -r -d '' -a AVAR <<< ${VAR}

echo LEN="[${#AVAR[@]}]"
for VAR in "${AVAR[@]}"; do
    echo "VAR=[${VAR}]"
done

这里VAR是一个多行字符串变量,AVAR是一个数组变量。
运行结果:

LEN=[3]
VAR=[aa]
VAR=[bb]
VAR=[cc]
  1. 把数组变量元素拼接成单行串
#!/bin/bash

AVAR=(aa bb cc)
VAR=$(IFS=','; echo "${AVAR[*]}")
echo VAR="[$VAR]"

运行结果:

VAR=[aa,bb,cc]

补充一点,关于read命令行参数-r和-d的解释

  • -r
    原文解释:
Backslash  does  not  act  as an escape character. 
The backslash is considered to be part of the line.
In particular, a backslash-newline pair may not be used as a line continuation.

意思很简单,就是如何处理转义字符(”\“),如果没有"-r",那么""被认为是一个转义字符,否则""就被认为是一个普通字符。

  • -d delim
    原文解释:
The first character of delim is used to terminate the input line, rather than newline.

所以delim的缺省值是换行符,否则就是delim的第一个字符;read一直读到遇到delim为止,就不再往下继续读了。
如果指定-d '',即delim是一个空串,那么read会认为delim的第一个字符是0,也就是读到文件结尾为止。

相关文章

  • bash处理多行字符串变量

    读入多行字符串到变量 运行结果: 读入多行字符串到数组变量 运行结果: 2.2 如何把多行变量转出数组 这里VAR...

  • shell编程基础

    Bash变量 · 在Bash中,变量的默认类型都是字符串型 如果需要要转换,用declare命令 decl...

  • 03-Nextflow脚本

    语言基础 Hello world、变量、列表、映射、多重赋值、条件执行、字符串、字符串插值、多行字符串 内置变量 ...

  • shell快速使用笔记

    shell 脚本的第一行以:#!/bin/sh 或 #!/bin/bash 开头 基础变量 1.多行注释 2.变量...

  • bash脚本编程

    [TOC] 变量: 存储单个元素的内存空间 数组: 存储多个元素的连续的内存空间 数组 bash的字符串处理工具:...

  • Swift5.5学习笔记二:字符串和字符

    //一、字符串文字//使用字符串文字作为常量或变量的初始值: //1.多行字符串文字//如果字符串需要跨越多行的,...

  • bash编程-Shell变量

    bash中,所有变量的值默认均为字符串。 1. 变量操作 调用变量 查看变量(所有类型) 删除变量 2. 变量分类...

  • TS 字符串新特性

    No 1:声明多行字符串: ` 这里面支持换行 ` No 2:字符串模板 : `I am ${变量名}` ,...

  • JavaScript 基本语法

    基本语法语句注释 数据类型和变量数据类型Number字符串布尔值数组对象变量strict模式 字符串多行字符串 数...

  • 2020-11-20 lua

    a=nil 等于删除a[[]]多行字符串默认全局变量local本地变量基本类型 nil,boolean,numbe...

网友评论

      本文标题:bash处理多行字符串变量

      本文链接:https://www.haomeiwen.com/subject/vdazyltx.html