ユーザーが入力した文字列を別の文字列に置き換える

ユーザーが入力した文字列を別の文字列に置き換える

だから私はmadlibsに関連するbashプログラムを書いています。入力した最初の単語がリンゴの場合は、この関数を使用して倍に置き換えることができます。 Bashでこの問題をどのように解決しますか? (バッシュにとても新しい)

function replaceFirst(){
#Code to go here 

}

「sed」について何かを見ましたが、私が言ったように、私はここに初めて来たので、どんな助けでもいいと思います!

答え1

ある単語を別の単語に置き換えるには、などの外部コマンドを使用する必要はありませんsed。 Bash自体がそれを行うことができます。

function replace_first {
    local user_input="$1"
    local replace_with="$2"

    set -f -- $1
    local first_word="$1"

    echo "${user_input/#$first_word/$replace_with}"
}

# read user input
read -rp 'Enter some text: '

# sample usage
replace_first "$REPLY" Hello

setユーザーが入力した最初の単語に簡単にアクセスできるように、位置パラメータをリセットします。この-fオプションはファイル名の拡張を防ぎます。また、$1引用がないという点も参考にしてください。通常、変数は常に引用符で囲む必要がありますが、この場合はトークン化が必要です。

${parameter/#pattern/string}文字列の最初の単語だけを置き換えます。これは、同じ単語が文字列の他の場所に表示されるのを防ぐためです。

Bashは以下の詳細を提供します。シェルパラメータ拡張

入力テキストがと仮定しますHi there。出力は次のとおりです。

$ Enter some text: Hi there
Hello there

関連情報