$variable
不確実な数のテキスト行を保存するスクリプトがあります。名前を付けてscript.bash
次の場所にいるとしましょう$HOME
。
#!/bin/bash
# commands on the beginning of my script
variable='Lorem Ipsum is simply dummied
text of the printing and
typesetting industry. Lorem Ipsum has been the
industry standard dummy text ever since the 1500s'
# commands at the end of my script
variable
のテキストを変更する新しいスクリプトを作成したいと思いますscript.bash
。コードのアイデアは次のとおりです。
#!/bin/bash
file="$HOME/script.bash"
mynewvariable='one
two
three'
substitute_everything_inside_variable () {
# code
}
substitute_everything_inside_variable "$mynewvariable" "$file"
1行の場合は、sed
次のように行全体を新しい行に置き換えることができます。
sed -i "5s/.*/$mynewvariable/" "$HOME/script.bash"
ただし、一重引用符内のすべての内容を置き換える必要があること(そしてその中のテキスト行の数は可変です)を考えると、コマンドラインツールを使用してこれを行う方法がわかりません。各行で何が起こっているのかを読んで解釈せずにこれを行う方法はありますか?
ベストアンサー1
中断したくない他の多くのコンテンツを含むファイルから複数行に囲まれた引用符付き文字列を変更するよりも、ファイルの内容全体を変更する方がはるかに簡単です。
内容を$variable
ファイル(たとえばvfile.txt
)に入れ、シェルスクリプトでこのようなことを行うようにしますvariable="$(cat vfile.txt)"
。
その後、交換または変更したい方法を使用できますvfile.txt
。