LoginSignup
874
776

More than 5 years have passed since last update.

bashの初見殺しっぷりがハンパない件

Last updated at Posted at 2017-01-13
  • 「これ知らなきゃ分からないだろ!」
  • 「エラーの原因はわかったけど、なんか腑に落ちない」
  • いま悩んだ2時間返せ!

bashというか、UNIXのコマンドに慣れてない
僕みたいな新人エンジニアが
気をつけた方がいいポイントまとめました。

あいことばをわすれない

微妙にエラーが出ないため、気づかないまま進んでしまい、
のちのち絶妙に致命的なことになってしまうので注意。

#!/bin/bash
set -Ceu

一行目忘れて2時間悩みました
二行目のオプションつけなかったため2時間悩みました

setのオプションはお好みで

あいことばの解説:
http://qiita.com/magicant/items/f3554274ee500bddaca8

半角スペースをつけるな!半角スペースをつけろ!

shellさんはスペースに非常に神経質です。
よくある変数代入では=の前後にスペースいれてはダメです。

val=1

これだけで1時間悩みました

また、if文とかで使うカッコの前後、

if [ $val -eq 0 ];then
  echo ok
fi

こっちはスペースが無いとエラーでます。
1時間ほど悩みました

ほか、ドットもスペース有り無しで違います。

#カレントディレクトリにあるhoge.shを(別Shell立ち上げて)実行する
./hoge.sh
#ルートにあるhoge.shを、カレントシェルで実行する。(ドットコマンド)
. /hoge.sh



2


40
105


15

$*$@



2

!






 Shellcheck 
https://www.shellcheck.net/

使


Shellcheck
#!/bin/bash
set -Ceu

val=1

if [ val -eq 0 ];then
  echo ok
fi

すると

image

6行目のvalに"$"を忘れたので怒ってくれます。
便利!

874
776
9

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

874
776