为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2019-07-02 14:57:46
如何从Bash变量中修剪空格?我有一个shell脚本,其中包含以下代码:var=`hg st -R "$path"`if [ -n "$var" ]; then     echo $varfi但是条件代码总是执行,因为hg st始终打印至少一个换行符。有没有一种简单的方法从$var(比如trim()在……里面PHP)?或是否有一个标准的方法来处理这个问题?我可以用SED或AWK,但我想对这个问题有一个更优雅的解决方案。
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

让我们定义一个包含前导、尾随和中间空格的变量:

FOO=' test test test 'echo -e "FOO='${FOO}'"# > FOO=' test test test 'echo -e "length(FOO)==${#FOO}"# > length(FOO)==16

如何删除所有空白(以[:space:]在……里面tr):

FOO=' test test test 'FOO_NO_WHITESPACE="$(echo -e "${FOO}" | tr -d '[:space:]')"echo -e "FOO_NO_WHITESPACE='${FOO_NO_WHITESPACE}'"
# > FOO_NO_WHITESPACE='testtesttest'echo -e "length(FOO_NO_WHITESPACE)==${#FOO_NO_WHITESPACE}"# > length(FOO_NO_WHITESPACE)==12

如何仅删除前导空格:

FOO=' test test test 'FOO_NO_LEAD_SPACE="$(echo -e "${FOO}" | sed -e 's/^[[:space:]]*//')"echo -e "FOO_NO_LEAD_SPACE='${FOO_NO_LEAD_SPACE}'"
# > FOO_NO_LEAD_SPACE='test test test 'echo -e "length(FOO_NO_LEAD_SPACE)==${#FOO_NO_LEAD_SPACE}"# > length(FOO_NO_LEAD_SPACE)==15

如何仅删除尾随空格:

FOO=' test test test 'FOO_NO_TRAIL_SPACE="$(echo -e "${FOO}" | sed -e 's/[[:space:]]*$//')"echo -e "FOO_NO_TRAIL_SPACE='${FOO_NO_TRAIL_SPACE}'"
# > FOO_NO_TRAIL_SPACE=' test test test'echo -e "length(FOO_NO_TRAIL_SPACE)==${#FOO_NO_TRAIL_SPACE}"# > length(FOO_NO_TRAIL_SPACE)==15

如何同时移除前导和尾随空格.seds:

FOO=' test test test 'FOO_NO_EXTERNAL_SPACE="$(echo -e "${FOO}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
echo -e "FOO_NO_EXTERNAL_SPACE='${FOO_NO_EXTERNAL_SPACE}'"# > FOO_NO_EXTERNAL_SPACE='test test test'echo -e "
length(FOO_NO_EXTERNAL_SPACE)==${#FOO_NO_EXTERNAL_SPACE}"# > length(FOO_NO_EXTERNAL_SPACE)==14

或者,如果bash支持它,则可以替换echo -e "${FOO}" | sed ...带着sed ... <<<${FOO},类似于(用于尾随空格):

FOO_NO_TRAIL_SPACE="$(sed -e 's/[[:space:]]*$//' <<<${FOO})"


查看完整回答
反对 回复 2019-07-02
?
湖上湖

TA贡献2003条经验 获得超2个赞

一个简单的答案是:

echo "   lol  " | xargs

夏格斯会帮你修剪的。这是一个命令/程序,没有参数,返回修整的字符串,很简单!

注意:这不会删除内部空间"foo bar"保持不变。它不会变成"foobar".


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 702 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信