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