Bashスクリプト値でファイルの文字列を置き換える

Bashスクリプト値でファイルの文字列を置き換える

このbashスクリプトはMac端末で実行され、ユーザー入力を要求して$nameから、ユーザー入力を含めるために他のファイルの文字列を置き換える必要がありますPLACEHOLDER_BACKEND_NAME=$name

#!/bin/bash
read -r name

if ! grep -q PLACEHOLDER_BACKEND_NAME="\"$name\"" ~/path-to-file.sh; then
perl -pi -e 's/PLACEHOLDER_BACKEND_NAME.*/PLACEHOLDER_BACKEND_NAME=$name/g' ~/psth-to-file.sh
fi

perl replaceコマンドは$name変数の値を取得できません。私はBashに慣れていません。

ベストアンサー1

bashは、単一引用符で囲まれた文字列内で変数の内容を拡張しません。文字列には二重引用符を使用する必要があります。

例:

これにより、次のものが印刷されます。私の名前は:$ name

name="haha"
echo 'my name is : $name'

これにより、次のものが印刷されます。私の名前は:ハハ

name="haha"
echo "my name is : $name"

だからそれを交換してください

perl -pi -e 's/PLACEHOLDER_BACKEND_NAME.*/PLACEHOLDER_BACKEND_NAME=$name/g' ~/psth-to-file.sh

そして

perl -pi -e "s/PLACEHOLDER_BACKEND_NAME.*/PLACEHOLDER_BACKEND_NAME=$name/g" ~/psth-to-file.sh

おすすめ記事