如何从Bash变量中修剪空格?

如何从Bash变量中修剪空格?

我有一个shell脚本,其中包含以下代码:

var=`hg st -R "$path"`if [ -n "$var" ]; then
    echo $varfi

但是条件代码总是执行,因为hg st始终打印至少一个换行符。

  • 有没有一种简单的方法从

    $var

    (比如

    trim()

    在……里面

    PHP)?

  • 是否有一个标准的方法来处理这个问题?

我可以用SEDAWK,但我想对这个问题有一个更优雅的解决方案。


青春有我
浏览 703回答 3
3回答

守着一只汪

让我们定义一个包含前导、尾随和中间空格的变量:FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'echo&nbsp;-e&nbsp;"FOO='${FOO}'"#&nbsp;>&nbsp;FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'echo&nbsp;-e&nbsp;"length(FOO)==${#FOO}"#&nbsp;>&nbsp;length(FOO)==16如何删除所有空白(以[:space:]在……里面tr):FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'FOO_NO_WHITESPACE="$(echo&nbsp;-e&nbsp;"${FOO}"&nbsp;|&nbsp;tr&nbsp;-d&nbsp;'[:space:]')"echo&nbsp;-e&nbsp;"FOO_NO_WHITESPACE='${FOO_NO_WHITESPACE}'" #&nbsp;>&nbsp;FOO_NO_WHITESPACE='testtesttest'echo&nbsp;-e&nbsp;"length(FOO_NO_WHITESPACE)==${#FOO_NO_WHITESPACE}"#&nbsp;>&nbsp;length(FOO_NO_WHITESPACE)==12如何仅删除前导空格:FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'FOO_NO_LEAD_SPACE="$(echo&nbsp;-e&nbsp;"${FOO}"&nbsp;|&nbsp;sed&nbsp;-e&nbsp;'s/^[[:space:]]*//')"echo&nbsp;-e&nbsp;"FOO_NO_LEAD_SPACE='${FOO_NO_LEAD_SPACE}'" #&nbsp;>&nbsp;FOO_NO_LEAD_SPACE='test&nbsp;test&nbsp;test&nbsp;'echo&nbsp;-e&nbsp;"length(FOO_NO_LEAD_SPACE)==${#FOO_NO_LEAD_SPACE}"#&nbsp;>&nbsp;length(FOO_NO_LEAD_SPACE)==15如何仅删除尾随空格:FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'FOO_NO_TRAIL_SPACE="$(echo&nbsp;-e&nbsp;"${FOO}"&nbsp;|&nbsp;sed&nbsp;-e&nbsp;'s/[[:space:]]*$//')"echo&nbsp;-e&nbsp;"FOO_NO_TRAIL_SPACE='${FOO_NO_TRAIL_SPACE}'" #&nbsp;>&nbsp;FOO_NO_TRAIL_SPACE='&nbsp;test&nbsp;test&nbsp;test'echo&nbsp;-e&nbsp;"length(FOO_NO_TRAIL_SPACE)==${#FOO_NO_TRAIL_SPACE}"#&nbsp;>&nbsp;length(FOO_NO_TRAIL_SPACE)==15如何同时移除前导和尾随空格.seds:FOO='&nbsp;test&nbsp;test&nbsp;test&nbsp;'FOO_NO_EXTERNAL_SPACE="$(echo&nbsp;-e&nbsp;"${FOO}"&nbsp;|&nbsp;sed&nbsp;-e&nbsp;'s/^[[:space:]]*//'&nbsp;-e&nbsp;'s/[[:space:]]*$//')" echo&nbsp;-e&nbsp;"FOO_NO_EXTERNAL_SPACE='${FOO_NO_EXTERNAL_SPACE}'"#&nbsp;>&nbsp;FOO_NO_EXTERNAL_SPACE='test&nbsp;test&nbsp;test'echo&nbsp;-e&nbsp;" length(FOO_NO_EXTERNAL_SPACE)==${#FOO_NO_EXTERNAL_SPACE}"#&nbsp;>&nbsp;length(FOO_NO_EXTERNAL_SPACE)==14或者,如果bash支持它,则可以替换echo -e "${FOO}" | sed ...带着sed ... <<<${FOO},类似于(用于尾随空格):FOO_NO_TRAIL_SPACE="$(sed&nbsp;-e&nbsp;'s/[[:space:]]*$//'&nbsp;<<<${FOO})"

湖上湖

一个简单的答案是:echo&nbsp;"&nbsp;&nbsp;&nbsp;lol&nbsp;&nbsp;"&nbsp;|&nbsp;xargs夏格斯会帮你修剪的。这是一个命令/程序,没有参数,返回修整的字符串,很简单!注意:这不会删除内部空间"foo bar"保持不变。它不会变成"foobar".
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python