だから私は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