我最初将一组 6 个参数传递给脚本。
Script.sh a b c d e f
Run Code Online (Sandbox Code Playgroud)
脚本中管理参数的命令之一;
comm=$(echo $1 |sed 's/~/ /g')
Run Code Online (Sandbox Code Playgroud)
Kus*_*nda 10
该sed表达式s/~/ /g用空格字符替换每个波浪号。它的字面意思是“在~全局范围内(在整个输入行上)用空格替换与正则表达式匹配的所有内容”。在这种情况下,表达式也可以写为更快y/~/ /,整个sed命令可以替换为更快tr '~' ' '。
在bash,这可以更有效地完成
comm=${1//\~/ }
Run Code Online (Sandbox Code Playgroud)
该~来转义或引用在这里不被扩展为当前用户的主目录的路径名。
在任何情况下,$1如果您使用它,则需要双引号echo(除非您希望将 shell glob 扩展为文件名),并且理想情况下,该命令将使用printf(这避免了初始破折号$1被解释为开始一些选项echo,并避免在某些情况下解释某些反斜杠序列):
comm=$( printf '%s\n' "$1" | tr '~' ' ' )
Run Code Online (Sandbox Code Playgroud)
有关的: