文字列の文字列に変数を印刷します。

文字列の文字列に変数を印刷します。

文字列文字列内で変数を印刷する方法がわかりません。

次の変数なしで起動しましたが、うまくいきました。

#!/bin/bash

ssh 1.1.1.1 $'sudo -H -u apache bash -c \'cd ~/html; echo development > stuff.text\''

私のサーバーにログインすると、ファイルに.perfectという単語が含まれている1.1.1.1ことがわかります。stuff.textdevelopment

その後、次のbashスクリプトを作成しました。

#!/bin/bash

BRANCH=development
ssh 1.1.1.1 $'sudo -H -u apache bash -c \'cd ~/html; echo ${BRANCH} > stuff.text\''

ただし、このbashスクリプトを実行すると空のstuff.textファイルが生成されます。また、次のコマンドを試しましたが、両方とも構文/構文解析エラーが発生しました。

ssh 1.1.1.1 $`sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'`
ssh 1.1.1.1 ${`sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'`}
ssh 1.1.1.1 ${sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'}
ssh 1.1.1.1 ${"sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'"}

別の文字列内の文字列内に変数を作成するには?

ベストアンサー1

不必要に複雑な表記法を使用しています。ここではまったく必要では$なくssh、リモートサーバーでコマンドとして実行される文字列を受け入れます。cdどこにも行く必要はありません。この試み:

#!/bin/bash

## avoid CAPS for shell variable names.
branch=development

ssh 1.1.1.1 "sudo -H -u apache bash -c 'echo $branch > ~/html/stuff.text'"

おすすめ記事