0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【fish】【ShellScript】fish環境で初めてShellScript(シェルスクリプト)を触る私が困ったこと

0
Last updated at Posted at 2021-12-05

はじめに

初めまして!
Life is Tech ! メンターで、某大学院の2年生で情報工学の研究に勤しんでいるきゃみです!
今日はShellScriptについてまとめてみました!

ShellScriptはfishとbash(zsh)でコードが違う

仕事でfish環境にしなきゃいけないことがあり、その中で作業効率化のために初めてShellScriptを触ったら仕様がちょくちょく違う部分があったので、備忘録的にfishとbash(zsh)の仕様の違いをまとめてみました。
自分の認識なので間違ってる部分があれば是非コメントいただきたいです!

変数宣言が違う

bashの場合

bash.sh
hoge="fuga"

fishの場合

fish.sh
set hoge "fuga"

=くらい使わせてくれよなあ、、、

変数の使い方が違う

bashの場合

bash.sh
$hoge
${hoge}
# どっちでもいい

fishの場合

fish.sh
$hoge
# こっちだけ許されてる

シンプルになんで?連結する時にとても不便

引数の使い方が違う

bashの場合

bash.sh
$1 #一つ目の引数
$2 #二つ目の引数

fishの場合

fish.sh
$argv[1] #一つ目の引数
$argv[2] #二つ目の引数

これはfishの方がわかりやすいかもしれないけど気づけない

四則演算の仕方が違う

bashの場合

bash.sh
$(( $hoge + 1 ))

fishの場合

fish.sh
expr $hoge + 1

四則演算までコマンド操作にするんじゃねええええ

if文、ループ文の文法が違う

bashの場合

bash.sh
if [$hoge -ge 123] then;
    # なんか処理
fi

for f in hoge fuga
do
  # なんか処理
done

fishの場合

bash.sh
if [$hoge -ge 123]
    # なんか処理
end

for f in hoge fuga
  # なんか処理
end

これもなんとなくfish文法のが馴染みあるけど、エディターがシンタックスハイライトしてくれないのがうざすぎる

コマンドの使い方が違う

bashの場合

fish.sh
for f in 'ls direcectory'
do
  # なんか処理
done

# 上下のどちらか

for f in $(ls direcectory)
do
  # なんか処理
done

fishの場合

fish.sh
for f in (ls direcectory)
  # なんか処理
end

これもシンタックスハイライトしてくれないのでうざい

なんかわからないけどif文の条件分に使えないコマンドがある

これは自分の環境だからかもしれないけど、testコマンドが使えなかった

fishの場合

fish.sh
if (test $hoge -ge 123)
    # 実行すると上の行でエラーを吐く
end

実際に吐くエラー

iTerm
create_matlab_code.sh (line 16): Command substitutions not allowed
  if (test $i -ge 2) && [ $i -le 11 ]
     ^
from sourcing file create_matlab_code.sh
source: Error while reading file 'create_matlab_code.sh'

最後に

こんなに仕様変えなくてもいいじゃないか...

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?