Если вам нужно подключиться к одной Базе Данных, то вы можете сделать следующий
экспорт TWO_TASK=db_SID
вы можете поместить это в /etc/профиль, и ваша работа будет выполнена.
]Вы можете использовать первую форму, но вам нужно поместить пробелы после [][[[
]]. Смотрите:[
$ type [[
[[ is a shell keyword
$ help [[
[[ ... ]]: [[ expression ]]
Execute conditional command.
]
[]Так ваша команда должна выглядеть следующим образом:[
] [[[ $HOSTNAME =~ 'q20' ]] && alias a='cd ~/a1' || alias a='cd ~/a99'
] case $HOSTNAME in (*q20*) alias a='cd ~/a1';; (*) alias a='cd ~/a99'; esac
]
[] Вы получаете ошибку, так как пробелы пропущены после [][[[
] и так как []-z[
] нужно проверить, пустая ли конкретная строка. [][[[
] является нестандартной функцией, как она себя ведет, зависит от версии []bash[
]. Структура []case[
] является POSIX и, как написано, будет работать в любом POSIX shell'е и в любой версии []bash[
]. [
] В общем, также лучше держаться подальше от таких вещей, как []cmd1 && cmd2 || cmd3[
], так как она обычно не делает то, что вы хотите, если []cmd2[
] не получится.[
] Кроме того, я не вижу смысла ставить все это на одну строчку. Это что-то, что пойдет в какой-нибудь rc-файл, верно? Тогда он будет намного более разборчивым, если на нескольких строках.[
] [case $HOSTNAME in
(*q20*) alias a='cd ~/a1';;
(*) alias a='cd ~/a99'
esac
]
[]более разборчивым и переносимым, чем:[
] [if [[ $HOSTNAME =~ q20 ]]; then
alias a='cd ~/a1'
else
alias a='cd ~/a99'
fi
]
[]сам по себе более разборчивым (и более правильным), чем:[
] [[[ $HOSTNAME =~ q20 ]] &&
alias a='cd ~/a1' ||
alias a='cd ~/a99'
]
[]сам по себе более разборчивым, чем[
] [[[ $HOSTNAME =~ q20 ]] && alias a='cd ~/a1' || alias a='cd ~/a99'
]