如何处理别名中的多个引号(用于 bash 或 zsh)

如何处理别名中的多个引号(用于 bash 或 zsh)

我正在使用 zsh,并尝试将 python 用作简单的计算器。我非常熟悉 python,但似乎无法让别名(或函数)正常工作。

到目前为止我已经得到:

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

无论我做什么,它都会返回zsh: no matches found: 123*123(123*123 是数学问题)。

有任何想法吗???

答案1

猛击
将以下内容添加到 .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

正如 Michael Righi 在他的回答中指出的那样,如果您有像 12*12 这样的文件,它将与 12*12 匹配,因此您可能需要将其括在双引号中。 您也可以将其括在单引号中。 他的解决方案也适用于 bash。

答案2

将其添加到.zshrc:

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

在你的 Z shell 中,像这样使用它:

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

请注意,当语句包含通配符(例如星号)时,需要使用双引号。

或者,你可以关闭该别名的通配符:

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

这样在使用时就不需要双引号了:

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

相关内容