バッシュ関数が議論を受けたかどうかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4484113

質問

簡単な質問。私はemacsが大好きです。私は物を入力するのが嫌いなので、私は使用するのが好きです e EMACSを呼び出す。

以前は、.bash_profile(os x)を構成していました。 alias e="emacs .". 。ただし、1つのファイルを編集したいだけで、まだemacs {file}を入力する必要があることにうんざりしていました。

それで、私はグーグルでこれを鞭打ちしようとしましたが、バッシュは []:

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

私はこれを使ってやりたいです: e something.c あるいは単に e.

役に立ちましたか?

解決

#!/bin/bash                       

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

他のヒント

試す

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

バッシュはスペースについて非常に独特だと思います。関数名と()の間のスペースを省略することが許可されていることに驚いています。 (また、$@を使用すると、渡すすべてのファイルを開く必要があります。)

ETA:の場合は、議論の数に対してよりよく確認してください e "" foo.txt...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top