bash脚本中具有多种类型分隔符的参数



我想在bash脚本中使用多种类型的分隔符作为参数。

示例参数类型(空格、逗号、分号、混合(:

./x.sh par1 par2 par3
./x.sh par1,par2,par3
./x.sh par1;par2;par3;
./x.sh par1,par2;par3 par4

我有:

#!/usr/bin/env bash
for i in ${*//,/ }; do
echo $i
done

这适用于空格和逗号,但不适用于分号。

#!/usr/bin/env bash
for i in ${*//[,;]/ }; do
echo $i
done
./x.sh "par1,par2;par3 par4"
par1
par2
par3
par4

$*是一个特殊参数,它返回由IFS特殊变量的第一个字符(默认为空格(分隔的所有参数。

${*//[,;]/ };使用参数扩展将所有出现的模式(字符,;(替换为一个空格。

最新更新