以下は、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
これには、つまり、代わりにコマンド置換を使用する必要があります。
comp={ echo "$fullName" } | sed 's/ //g'
何かのようなもの
comp=$(echo "$fullName" | sed 's/ //g')
または
comp=`echo "$fullName" | sed 's/ //g'`