バッシュ関数が議論を受けたかどうかを確認するにはどうすればよいですか?
-
11-10-2019 - |
質問
簡単な質問。私は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
...
所属していません StackOverflow