Параметр в скрипте bash с несколькими типами разделителей - PullRequest
0 голосов
/ 04 марта 2020

Я хотел бы использовать несколько типов разделителей в качестве параметра в моем скрипте bash.

Примеры типов параметров (пробел, запятая, точка с запятой, смешанный):

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

I have:

 #!/usr/bin/env bash

 for i in ${*//,/ }; do
    echo $i
 done

Это работает для пробела и запятой, но не для точки с запятой.

1 Ответ

4 голосов
/ 04 марта 2020
#!/usr/bin/env bash

for i in ${*//[,;]/ }; do
  echo $i
done
./x.sh "par1,par2;par3 par4"
par1
par2
par3
par4

$* - это специальный параметр , который возвращает все аргументы, разделенные первым символом специальной переменной IFS (по умолчанию пробел).

${*//[,;]/ }; использует расширение параметра для замены всех вхождений образца (символы , и ;) на пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...