如何在tr命令中传递变量空格字符

时间:2015-03-31 08:40:09

标签: bash shell unix replace

在shell脚本中,我想用函数中的空格替换所有下划线字符,该函数使用tr但是接收错误,因为我不知道将变量中的空格传递给tr

function sanitizeDirName() {
  local name=$1
  local f=$2
  local r=$3
  echo ${name##*/} | grep -E -o $re | tr $f $r 
}

sanitizeDirName "~/test_1" "_" " "

谢谢

1 个答案:

答案 0 :(得分:0)

你需要引用你的变量,因为它们是从用户输入填充的,可能有空格或元字符(如注释中指出的三元组):

echo ${name##*/} | grep -E -o "$re" | tr "$f" "$r"

如果您要删除_,则可能需要使用-d标记

echo ${name##*/} | grep -E -o $re | tr -d $f