私はsedスクリプトに初めて触れました。ユーザーにファイルに挿入する値を要求するスクリプトを作成したいと思います。正しいコードが見つかりません
だからテキストファイルの私の行は次のようになります
path =
ユーザーのパスを入力したいので、行は次のようになります。
path = /dev
試行錯誤を経て得たものは次のとおりです。
read -p "Enter path name: " PT
echo "$( sed -i '/path/ s/.*/& $PT/' textfile )"
これは作る
path = $PT
正しいコードを教えてください。
答え1
一重引用符内では変数の拡張は行われません。代わりに二重引用符を使用してください。
/
+変数はパスの一部として含まれるためです。 GNUの場合は、sed
別の代替区切り文字を使用する必要があります。
read -p "Enter path name: " PT
sed -i "\#path# s#.*#& $PT#" infile
答え2
read -p "Enter path name: " PT
sed -i "/path/ s#.*#& $PT#" textfile
一重引用符ではなく二重引用符を使用する必要があります。一重引用符はシェルから文字列を保護しますが、この場合はシェルに値を拡張させたいとします$PT
。
返品、
echo "$( ... )"
...
(の内容)と同じです$( ... )
。