如何检查我的 Bash 函数是否有参数?

发布于 2024-10-08 04:58:30 字数 431 浏览 2 评论 0原文

快问。我喜欢 emacs。不过我讨厌打字,所以我喜欢使用 e 来调用 emacs。

之前我将 .bash_profile (OS X) 配置为:alias e="emacs ."。然而,当我只想编辑一个文件时,我厌倦了仍然必须输入 emacs {file} 。

所以我试图通过一些谷歌搜索来解决这个问题,但是 bash 抱怨 []

###smart emacs, open file, or if none, dir 
e()
{
    if [$1]; then
        emacs $1
    else
        emacs .
    fi
}

我想用它来做:e some.c 或者,只是e

Quick question. I love emacs. I hate typing stuff though, so I like to use e to invoke emacs.

Previously I had my .bash_profile (OS X) configured as: alias e="emacs .". However, I was tired of still having to type emacs {file} when I just wanted to edit one file.

So I tried to whip this up, from some googling, but bash is complaining about the []:

###smart emacs, open file, or if none, dir 
e()
{
    if [$1]; then
        emacs $1
    else
        emacs .
    fi
}

I want to use this to do: e something.c or, just e.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡写薰衣草的香 2024-10-15 04:58:30

尝试一下

if [ $# -ge 1 ]; then
  emacs "$@"

我认为 bash 对于空格非常奇特。我什至感到惊讶的是,您可以省略函数名称和 () 之间的空格。 (此外,使用 $@ 应该打开您传递的所有文件。)

ETA:更好地检查参数数量,以防 e "" foo.txt...

Try

if [ $# -ge 1 ]; then
  emacs "$@"

I think bash is very peculiar about spaces. I'm even surprised you're allowed to omit a space between function name and (). (Also, using $@ should open all files you pass.)

ETA: better check against number of arguments, in case of e "" foo.txt...

不乱于心 2024-10-15 04:58:30
#!/bin/bash                       

###smart emacs, open file, or if none, dir
e()
{
    if [[ -z "$1" ]]; then # if "$1" is empty
        emacs .
    else
        emacs "$1"
    fi
}
#!/bin/bash                       

###smart emacs, open file, or if none, dir
e()
{
    if [[ -z "$1" ]]; then # if "$1" is empty
        emacs .
    else
        emacs "$1"
    fi
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文