使用 bash 函数解析字符串

使用 bash 函数解析字符串

我正在尝试用 bash 函数替换一些代码以重用它。所以我之前的代码是:

#!/bin/bash
set aline=" dsfsdf | fsdfff | yuhfd "
set line_parsed=`echo $aline | tr '|' "\n"`
echo ${line_parsed[1]}

哪个输出dsfsdf.

现在,如果我尝试将句子放入函数中,我将无法正确执行:

#!/bin/bash
parseLine ()
{
set line_parsed=`$echo $1 | tr '|' "\n"`
echo ${line_parsed[1]}
}
set aline=" dsfsdf | fsdfff | yuhfd "
parseLine $aline

有语法错误吗?

答案1

要从字符串创建数组,请使用:

IFS='|' read -r -a line_parsed <<< "$aline"

  • IFS='|'设置bash内部字段分隔符|
  • read从其标准输入文件描述符读取
    • -r反斜杠不充当转义字符。
    • -a line_parsed创建一个名为line_parsed
  • <<< "$aline"是一个这里的字符串,它将 的内容传递$alinereads 标准输入。

您现在将拥有一个数组。echo "${line_parsed[0]}"将为您提供分割字符串的第一个元素。


所有这些都在一个函数中:

parseLine ()
{
  IFS='|' read -r -a line_parsed <<< "$1"
  echo "${line_parsed[0]}"
}

现在可以这样调用:

$ parseLine "dsfsdf | fsdfff | yuhfd "
dsfsdf

相关内容