web-dev-qa-db-ja.com

sedの結果を変数に割り当てる方法

以下は、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
9
Danijel-James W

これには、つまり、代わりにコマンド置換を使用する必要があります。

comp={ echo "$fullName" } | sed 's/ //g'

何かのようなもの

comp=$(echo "$fullName"  | sed 's/ //g')

または

comp=`echo "$fullName"  | sed 's/ //g'`
11
maxschlepzig