在bash中更改字符串类型变量的分隔符

Pid*_*una 1 bash shell sh while-loop

我的任务很小.

我应该写:

data="duke,rock,hulk,donovan,john"
Run Code Online (Sandbox Code Playgroud)

在下一个变量中,我应该更改第一个变量的分隔符.

data2="duke|rock|hulk|donovan|john"
Run Code Online (Sandbox Code Playgroud)

在bash上执行此操作的正确方法是什么?

这是脚本的一小部分,我应该做什么.

例如,我使用构造"WHILE-GETOPS-CASE"来在参数中使用用户名来排除它们.

ls /home/ | egrep -v $data2
Run Code Online (Sandbox Code Playgroud)

Fre*_*red 6

您可以使用扩展轻松替换单个字符:

data="duke,rock,hulk,donovan,john"
data2=${data//,/|}
echo "$data2"
Run Code Online (Sandbox Code Playgroud)

打破语法:

  • ${data表示"根据变量中的值进行扩展data;
  • // 意思是"搜索所有出现的";
  • 唯一的/意思是"用以下内容替换".

请注意,某些字符可能需要转义,但不能转义为逗号和竖线.

然后你可以像这样过滤结果:

ls /home/ | egrep -v "$data2"
Run Code Online (Sandbox Code Playgroud)