Хотя верно, что сама команда не может отключить глобус, пользователь может сказать оболочке Unix, чтобы не глотать определенную команду. Обычно это делается путем редактирования файлов конфигурации оболочки. Предполагая, что команда foo
может быть найдена по пути к команде, в соответствующий файл конфигурации необходимо добавить следующее:
Для оболочек sh, bash и ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
Для оболочек csh и tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Для оболочки zsh:
alias foo='noglob foo'
Путь к командной строке не нужно использовать. Скажем, команда foo хранится в каталоге ~ / bin, а затем следующее:
Для оболочек sh, bash и ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
Для csh и tcsh shells:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Для оболочки zsh:
alias foo='noglob ~/bin/foo'
Все вышеперечисленное было протестировано с использованием OSX 10.9.2 от Apple. Примечание. При копировании вышеуказанного кода будьте осторожны при удалении любых пробелов. Они могут быть значительными.
Пользователь geira указал, что в случае оболочки bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
можно заменить на
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
, что устраняет необходимость в функции foo.
Некоторые веб-сайты, используемые для создания этого документа:
Вы объявили fun1()
требовать аргумента, а затем вы назвали его без указания аргумента.
Вы объявили a
как переменную, но для определения вашей функции требуется аргумент, который также называется a
, но не связан с объявленной переменной.
Два варианта: вы можете передать переменную в функцию при вызове:
a=7
def fun1(a):
if a%2==0:
return 0
else:
return 1
fun1(a)
Или вы можете объявить a
как global
внутри функции, чтобы получить к ней доступ без необходимости передать его в качестве аргумента при вызове функции:
a=7
def fun1():
global a
if a%2==0:
return 0
else:
return 1
fun1()