我想在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
特殊变量的第一个字符(默认为空格(分隔的所有参数。
${*//[,;]/ };
使用参数扩展将所有出现的模式(字符,
和;
(替换为一个空格。