gcloud init
команда не предлагает приглашение для входа во время выполнения сценария bash.Выполнение команд gcloud в сценарии bash
Но он предложил логин после того, как я набрал команду 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)?
Мой Баш скрипт:
#!/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
Как я могу получить приглашение для входа во время выполнения Баш скрипт?
Каждая команда 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 \ '', но я не знаю, что это делает что. Вы просто хотите запустить эти команды в своей текущей оболочке. Поэтому просто напишите их, как обычные команды. И не запускайте новую оболочку (тогда вам нужно «выйти»), так как вам не нужен новый сеанс оболочки. –