【问题标题】:Bad substittion in kshksh 中的错误替换
【发布时间】:2017-02-16 02:20:51
【问题描述】:

我正在尝试向函数传递两个变量,我想将空格替换为文件名的下划线,即:

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

my_function "$directory/${file// /_}"

这将在 bash 和更高版本的 ksh 中工作,但是我正在使用较旧的 Solaris 9 机器,结果是替换错误。

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

【问题讨论】:

  • ${dir}/$(echo "$file"|sed 's/_/ /g')....。祝你好运。
  • 谢谢!虽然我用下划线替换空格所以 sed 's/ /_/g'.
  • tr 解决方案可能在微观上更有效(我投了赞成票)。如果您要使用sed,我会推荐printf "..." | sed '...',就像tr 解决方案一样。祝大家好运。

标签: bash shell ksh


【解决方案1】:

你可以使用tr:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2012-08-25
    • 2014-04-05
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多