如何将sed的结果分配给变量

Dan*_*s W 12 bash sed shell-script environment-variables bash-script

下面是我用来找出删除sed人名中空格的命令的演示的完整副本,并将其压缩为没有空格。

完成后,我想将它分配给变量,comp然后我可以稍后在脚本中重新使用它。在这里,我只是尝试将echo其发送到标准输出,这样我就可以看到它起作用了。

如果我运行脚本并输入我的名字,Ronald McDonald我得到的结果是RonaldMcDonald}他名字末尾的花括号,或者我输入的任何内容。

我如何让它工作,以便结果不会将 附加}到指定文本的后面。

#!/bin/bash

function readName {
    echo "Enter your full name:"
    read fullName
    clear
}    # end readName

function cmprsName {
    comp={ echo "$fullName" } | sed 's/ //g'
}    # end cmprsName

function sayItNow {
    echo $comp
}    # end sayItNow

function allTogether {
    readName
    cmprsName
    sayItNow
}    #end allTogether

case $1 in
        -h | --help )           allTogether
                                exit
                                ;;
        * )                     echo "$0 -h"
                                exit 1
esac
Run Code Online (Sandbox Code Playgroud)

max*_*zig 17

您必须为此使用命令替换,即代替

comp={ echo "$fullName" } | sed 's/ //g'
Run Code Online (Sandbox Code Playgroud)

就像是

comp=$(echo "$fullName"  | sed 's/ //g')
Run Code Online (Sandbox Code Playgroud)

或者

comp=`echo "$fullName"  | sed 's/ //g'`
Run Code Online (Sandbox Code Playgroud)

  • 也许应该注意的是,出于可读性和嵌套的原因,`$(..)` 语法优于旧的 `\`..\`` 语法。 (4认同)