将字段分配给变量-Bash

时间:2018-07-10 14:15:52

标签: bash unix

假设我有一个带有管道分隔符的字符串:

export class AppComponent  implements OnInit{
  name = 'Angular 6';

  constructor() {
    console.log(name); // OK
  }

  ngOnInit() {
    console.log('sample not giving error'); // OK
  }

 // comment line below and the error will go away
  console.log(name); // this will throw: Function implementation is missing or not immediately following the declaration
}

我希望将它们分配给特定变量。

str="1|2|3|4"

我是以这种方式做的:

var_a=1
var_b=2
var_c=3
var_d=4

这可以有效地完成吗?请提出建议。

2 个答案:

答案 0 :(得分:3)

最好使用数组存储单个定界值:

str="1|2|3|4"
IFS='|' read -ra arr <<< "$str"

#examine array values
declare -p arr

declare -a arr='([0]="1" [1]="2" [2]="3" [3]="4")' 

要遍历数组,请使用:

for i in "${arr[@]}"; do echo "$i"; done

1
2
3
4

答案 1 :(得分:1)

IFS='|' read -r var_a var_b var_c var_d rest <<<"$str"

rest是变量,如果存在其他任何变量,它会在前四列之后获得更多列。如果您只想丢弃它们,则用于占位符变量的常规名称为_

这在BashFAQ #1: How can I read a file (data stream, variable) line-by-line (and/or field-by-field)?

中有详细介绍