Далее следуют
https://stackoverflow.com/questions/1809899/how-can-i-assign-the-output-of-a-function-to-a-variable- using-bash и Как назначить вывод команды переменной?
Я написал
function getos(){
# http://stackoverflow.com/a/27776822/1637673
case "$(uname -s)" in
Darwin)
OS='mac'
;;
Linux)
OS='linux'
;;
CYGWIN*|MINGW32*|MSYS*)
OS='win'
;;
# Add here more strings to compare
# See correspondence table at the bottom of this answer
*)
OS='other'
;;
esac
echo $OS
}
echo $(getos)
OS=${getos}
echo ${OS} # show nothing
echo $OS # show nothing
echo $(OS) # line 36
Но bash common.sh
получил
linux
common.sh: line 36: OS: command not found
В чем проблема ??
bash
пытается выполнить команду OS
и терпит неудачу, потому что
$(OS)
- это Подстановка команды , тогда как
${OS} # or
$OS
Правильный способ печати содержимого переменной OS
- echo $OS
.
Я полагаю, что вы, однако, хотите запустить вашу функцию, которая присваивает значение вашей переменной OS
, а затем распечатать ее содержимое, если функция еще не выполнила:
getos
echo $OS
Основная проблема заключается в том, что OS=${getos}
ожидает, что getos
будет переменной , а не функцией (это расширение параметров, а не подстановка команд) - они фактически являются различными пространствами имен:
$ function foo() { echo foo; }
$ foo
foo
$ echo ${foo}
$
(т.е. переменная foo
пуста); тогда как
$ foo=bar
$
$ foo
foo
$ echo ${foo}
bar
Если вы хотите, чтобы OS
был синонимом для getos
, вы можете использовать псевдоним :
alias OS='getos'
(хотя, если вы При использовании этого в сценарии учтите, что расширение псевдонимов включено по умолчанию только в интерактивных оболочках).
TL; DR: скобки и скобки НЕ взаимозаменяемы
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55
74.125.0.0/16
. Для большего количества IP-адресов, которые может использовать Gmail, используйте эти dig _spf.google.com TXT
команда.
– Lekensteyn
4 June 2012 в 21:55