假设我有一个带有管道分隔符的字符串:
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
这可以有效地完成吗?请提出建议。
答案 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)?
中有详细介绍