gcloud init
コマンドは、bashスクリプトの実行中にログイン・プロンプトを表示しません。bashスクリプトでgcloudコマンドを実行
しかし、スクリプト終了後に手動でexit
コマンドを入力した後にログインを提供しました。
[email protected]:~$ exit
logout
Welcome! This command will take you through the configuration of gcloud.
Settings from your current configuration [default] are:
Your active configuration is: [default]
Pick configuration to use:
[1] Re-initialize this configuration [default] with new settings
[2] Create a new configuration
Please enter your numeric choice: 1
Your current configuration has been set to: [default]
To continue, you must log in. Would you like to log in (Y/n)?
私のbashスクリプト:
#!/usr/bin/env bash
OS=`cat /proc/version`
function setupGCE() {
curl https://sdk.cloud.google.com | bash
`exec -l $SHELL`
`gcloud init --console-only`
`chown -R $USER:$USER ~/`
}
if [[ $OS == *"Ubuntu"* || $OS == *"Debian"* ]]
then
sudo apt-get -y install build-essential python-pip python-dev curl
sudo pip install apache-libcloud
setupGCE
fi
私はbashスクリプトの実行中にログインプロンプトを取得できますか?
それぞれのbacktick-edコマンドは、独自のシェルで実行されます。彼らは対話しません(特に、 'gcloud init --console-only'が行ったことは、後のシェルには影響しません)。さらに、バックティックはここで間違っています。彼らは内側のコマンドを実行し、それらのコマンドから*出力*をコマンドとして実行しようとします。 –
@EtanReisnerあなたは何を提案しますか?すべてのコマンドを単一のバックティックエドコマンドに入れるには?同様に、backtick'exec -l $ SHELL && gcloud init --console-only && chown -R $ USER:$ USER〜/ 'backtick? – trex
いいえ、ここではバッククォートはまったく必要ありません。彼らは間違っている...'gcloud init --console-only'が現在のシェルを実行するのに必要な行を吐き出さないかぎり、' eval \ 'gcloud init --console-only \' 'が必要な場合がありますが、わかりませんそれ。現在のシェルでこれらのコマンドを実行したいだけです。だから、普通のコマンドのように書くだけです。新しいシェルセッションを必要としないので、新しいシェルを実行しないでください( 'exit'する必要があります)。 –