Как обрабатывать несколько кавычек в псевдониме (для bash или zsh)

Я использую zsh, и я пытаюсь использовать python в качестве простого калькулятора. Я очень хорошо знаком с python, но, похоже, не могу получить псевдоним (или функцию) для правильной работы.

до сих пор у меня есть:

pycalc() {
  python -c "print '$@'"
}
alias p=pycalc

независимо от того, что я делаю, он возвращает zsh: no matches found: 123*123 (123*123-математическая задача).

какие идеи???

16
задан AtHeartEngineer
13.01.2023 18:11 Количество просмотров материала 2895
Распечатать страницу

2 ответа

Bash

Добавить следующий текст .bashrc

pycalc() {
  python -c "print \"%f\" % float($@)"
}
alias p=pycalc

вы можете добавить его с помощью команды Echo.

В одну строку:

echo -e 'pycalc() {\n  python -c \"print \\"%f\\" % float($@)\"\n}\nalias p=pycalc' >> .bashrc

многоканальный:

echo -e 'pycalc() {
  python -c \"print \\"%f\\" % float($@)\"
}
alias p=pycalc' >> .bashrc

теперь вы можете использовать p

$ pycalc 12+12
24.000000
$ pycalc 12*12
144.000000
$ p 12+12
24.000000
$ p 12*12
144.000000

как отметил Майкл Риги в своем ответе, если у вас есть файл 12*12, он будет сопоставлен 12*12, поэтому вы можете заключить его в двойные кавычки. Вы также можете заключить его в одинарные кавычки. Его решение работает для bash слишком.

1
отвечен Bob 2023-01-15 01:59

zsh

добавить это .zshrc:

pycalc() {
  python -c "print $@"
}
alias p=pycalc

в вашей Z оболочки, используйте его следующим образом:

$ p 12+12
24
$ p "12*12"
144

обратите внимание, что двойные кавычки нужны, если оператор содержит символ глобуса, например звездочку.

или вы можете отключить глобус для этого псевдонима:

pycalc() {
  python -c "print $@"
}
alias p='noglob pycalc'

это устраняет необходимость в двойных кавычках при его использовании:

$ p 12+12
24
$ p 12*12
144
4
отвечен Michael Righi 2023-01-15 04:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх