首页 > 解决方案 > 通过取变量值循环

问题描述

我正在尝试编写 bash 脚本,以及如何以管道分隔符格式获取变量中定义的值并打印它们。以下是我正在考虑的算法,但不确定 bash 命令。

#!/bin/bash
variable1="A|B|C"

if [ ! -z "$variable1" ]
   count=#should return 3 as there are 3 values (A|B|C)
fi

while count>0; do
derivedvariable=#should get A, B, C in loop
print $derivedvariable
done
output should be: 
A
B
C

标签: linuxbashunix

解决方案


使用数组存储由字符分隔的输入元素:

s='A|B|C'
IFS='|' read -ra arr <<< "$s"

# length:
echo "${#arr[@]}"

# looping array:
for i in "${arr[@]}"; do
   echo "$i"
done

输出:

3
A
B
C

推荐阅读