この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