LoginSignup
2
0

More than 3 years have passed since last update.

[bash] 関数を1行で書く

Last updated at Posted at 2021-04-08

はじめに

bash等のシェルにおいて、長いコマンドを毎回打つのが面倒なとき、alias を設定しておくと便利です。

また、引数を交えてalias を設定したい場合、関数を定義することにより実現可能です。

関数定義の例

例えば、以下のコマンドをdbash hoge に省略したいとします。

docker exec -it hoge /bin/bash

このとき、状況により変化する引数(hoge)が引数の間にあるため、aliasでは対応できません。

その場合、以下のように関数を定義します。

.bashrc
function dbash(){
  docker exec -it "$1" /bin/bash
}

すると、以下のコマンドで実行可能になります。

dbash hoge

1行で定義したいとき

先程の関数は便利ですが、いくつも定義しようとすると行数が多くなり、見通しが悪くなる場合があります。

かといって、単に以下のように定義するとエラーとなります。

.barhrc
function dbash(){ docker exec -it "$1" /bin/bash }

エラー

source ~/.bash_profile
-bash: ~/.bashrc: line 1: syntax error: unexpected end of file (EOF)

そのため、ワンライナーで書く場合、コマンドの終了を書いてあげる必要があります。

.bashrc
function dbash(){ docker exec -it "$1" /bin/bash; }

上記はコマンドの最後に; が加わっています。

これで、.bashrc が見辛くなる心配もありません。

ただ、無理矢理1行にするのもよくないので、適宜使い分けましょう。

その他Tips

関数定義に置いいて、function または() のいづれかは省略可能です。
() を省略した場合、{ 前のスペースに注意

function dbash { docker exec -it "$1" /bin/bash; }
dockrun(){ dbash exec -it "$1" /bin/bash; }
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0