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

时间:2010-12-19 17:16:49

标签: bash .bash-profile bash-function

快速提问。我喜欢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 something.c或只是e

2 个答案:

答案 0 :(得分:2)

尝试

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

我认为bash在空间上非常特殊。我甚至惊讶你可以省略函数名和()之间的空格。 (另外,使用$ @应该打开你传递的所有文件。)

ETA:在e "" foo.txt ...

的情况下,更好地检查参数数量

答案 1 :(得分:1)

#!/bin/bash                       

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