Как сделать, “если переменная имеет шаблон 'abc', делают x, иначе сделайте y” (в 1 строке)

Если вам нужно подключиться к одной Базе Данных, то вы можете сделать следующий

экспорт TWO_TASK=db_SID

вы можете поместить это в /etc/профиль, и ваша работа будет выполнена.

0
12.06.2014, 16:22
2 ответа
[

]Вы можете использовать первую форму, но вам нужно поместить пробелы после [][[[]]. Смотрите:[

] [
$ type [[
[[ is a shell keyword

$ help [[
[[ ... ]]: [[ expression ]]
    Execute conditional command.
] [

]Так ваша команда должна выглядеть следующим образом:[

] [
[[ $HOSTNAME =~ 'q20' ]] && alias a='cd ~/a1' || alias a='cd ~/a99'
]
3
28.01.2020, 02:13
[
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'
]
7
28.01.2020, 02:13

Теги

Похожие вопросы