Bash ksh中的不良替代

Bash ksh中的不良替代,bash,shell,ksh,Bash,Shell,Ksh,我试图传递一个函数两个变量,我想用下划线代替空格作为文件名,即: directory=<path to file> file=<name of file> my_function "$directory/${file// /_}" 目录= 文件= 我的函数“$directory/${file//}” 这将在bash和更高版本的ksh中工作,但是我正在使用旧的solaris9机器,结果是一个错误的替换 在旧的KSH环境中,是否有一种干净的方法来实现此功能?您可以使用t

我试图传递一个函数两个变量,我想用下划线代替空格作为文件名,即:

directory=<path to file>
file=<name of file>

my_function "$directory/${file// /_}"
目录=
文件=
我的函数“$directory/${file//}”
这将在bash和更高版本的ksh中工作,但是我正在使用旧的solaris9机器,结果是一个错误的替换


在旧的KSH环境中,是否有一种干净的方法来实现此功能?

您可以使用
tr

my_function "$directory/$(printf '%s' "$file" | tr ' ' '_')"

您可以使用
tr

my_function "$directory/$(printf '%s' "$file" | tr ' ' '_')"

${dir}/$(echo“$file”| sed的/\ug//')..
。祝你好运,谢谢!虽然我用下划线替换空格,所以sed的//\ug.
tr
解决方案在微观上可能更有效(我投票了)。如果要使用
sed
,我建议使用
printf“…”sed“…”
,就像
tr
解决方案一样。祝大家好运。
${dir}/$(echo“$file”| sed's/\ug//')…
。祝你好运,谢谢!虽然我用下划线替换空格,所以sed的//\ug.
tr
解决方案在微观上可能更有效(我投票了)。如果要使用
sed
,我建议使用
printf“…”sed“…”
,就像
tr
解决方案一样。祝大家好运。