bashでshellを作るとき参考になるサイト集

# コメントアウト
```bash:コメントアウト
#!/bin/bash
# ↑これは「しぇばん」というそうです。
# <-1行のコメントはこれです。

<< '#_comment_'
複数行のコメント
_comment_
```
- [bashで複数行コメントアウトする方法 - Qiita](https://qiita.com/imura81gt/items/a2998147bd7ae8056b26)

# 判定したい
|条件式の演算子|意味|
|:-:|:-:|
|! A|Aの否定(!の後に半角スペースあり)|
|A -a B|and(A && B)|
|A -o B|or(A || B)|
|文字列1 = 文字列1|文字列1と2が等しかったら|
|数値1 -eq 数値2|数値1と2が等しかったら|

- [boolean を使った if 文 (条件分岐) - Qiita](https://qiita.com/zoe302/items/b8ec34a335134c8719c5)
- [初心者向け！シェルスクリプト演算子まとめました](https://eng-entrance.com/linux-shellscript-operator)

# 基本の文字列操作をやってみる
## 文字列を結合したい
```bash
str1=pon
str2=suke
# 並べる
echo $str1$str2 # >> ponsuke
# 並べる(ダブルクォーテーション版)
echo "なまえは、{$str1}{$str2}" # >> なまえは、ponsuke
# 追加する
name=''
name+=str1
name+=str2
echo $name # >> ponsuke
```

- [シェルスクリプトで文字列と変数を連結する | hacknote](http://hacknote.jp/archives/20987/)

## 大文字<->小文字の変換をしたい
```bash
小文字にする
${変数,,}
```

- [Bashで変数を大文字小文字変換(uppercase/lowercase)する - Qiita](http://qiita.com/kawaz/items/211266021515b3f033a3)
- [bashやsed、trコマンド…Linuxコンソール上で小文字⇔大文字変換する方法いろいろ | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2016/06/bash%E3%82%84sed%E3%80%81tr%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89linux%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E4%B8%8A%E3%81%A7%E5%B0%8F%E6%96%87%E5%AD%97%E2%87%94%E5%A4%A7%E6%96%87/)
- [sedによる小文字→大文字の変換 | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2014/06/sed%E3%81%AB%E3%82%88%E3%82%8B%E5%B0%8F%E6%96%87%E5%AD%97%E2%86%92%E5%A4%A7%E6%96%87%E5%AD%97%E3%81%AE%E5%A4%89%E6%8F%9B/)


# 変数を使ってみる
- [Bashにおける括弧類の意味 - Qiita](https://qiita.com/yohm/items/3527d517768402efbcb6)

## 変数に代入したい
- [bash: コマンドの実行結果を配列や変数に代入する | deadwood](https://www.d-wood.com/blog/2014/09/23_6869.html)
- [シェルスクリプトで変数に改行コードを含める方法 | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2014/11/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E5%A4%89%E6%95%B0%E3%81%AB%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%90%AB%E3%82%81%E3%82%8B%E6%96%B9/)

# 配列をつかってみる
@（アットマーク）と*（アスタリスク）の違い

- [【bash】シェルの配列について - TASK NOTES](http://www.task-notes.com/entry/20150119/1421646435)
    - とてもわかり易かったです:grin:

## 基本の1次元配列

- [bash 配列まとめ - Qiita](http://qiita.com/b4b4r07/items/e56a8e3471fb45df2f59)
- [配列を使用する | UNIX &amp; Linux コマンド・シェルスクリプト リファレンス](http://shellscript.sunone.me/array.html)
- [Oracleデータベースをエクスポートしてダンプファイルにする方法 - Qiita](https://qiita.com/ponsuke0531/items/b0fabe4628c7573b4d6f#%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E%E3%81%8C%E3%81%84%E3%81%A3%E3%81%B1%E3%81%84%E3%81%82%E3%81%A3%E3%81%A6%E9%9D%A2%E5%80%92%E3%81%8F%E3%81%95%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92%E4%BD%BF%E3%81%86)

## ちょっと応用して2次元配列を使ってみる

- [BASHで二次元配列 - 雑記帳](http://kiyohime.hatenablog.com/entry/2013/12/09/193729)
- [シェルスクリプトで2次元配列を扱ってみた | 黒ぶちメガネのblog](http://www.kurobuti.com/blog/?p=4880)
- [bashのshellで2次元配列を使ってHTMLのテーブルを作る方法 - Qiita](http://qiita.com/ponsuke0531/items/86df8752d8a4c4e9ca92)

2次元以上の多次元配列は使いたいがよくわからない

- [1 Entry per Day: eval command in bash shell script](https://mstssk.blogspot.jp/2009/04/eval-command-in-bash-shell-script.html)

# ファイルで色々やってみたい
- [RedmineのRest APIをcurlとjqで使ってみたサンプル - Qiita](https://qiita.com/ponsuke0531/items/ece54cd29c222b8ab250)
- [Kintoneのアプリのアクセス権をBashでCSV出力する方法 - 助っ人サービス for kintone](https://www.opentone.co.jp/kintone/archives/1810)

## ファイルへ書き込んだり、読み込んだりしたい
```bash:1行ずつ読み込んで処理する
# -n "${line}" で最終行が空行でない場合にも対応する
cat {ファイル名} | while read line || [ -n "${line}" ]; do
    # 1行($line)ずつ処理する
done
```

- [while readで最終行が処理されない問題の解決方法 - Qiita](https://qiita.com/Ets/items/a7fa24b138b8ee883dac)
- [ファイルを一行ずつ処理する方法,Read and process each line of file in File](http://sweng.web.fc2.com/ja/program/bash/read-each-line.html)
- [入出力制御 - Qiit](http://qiita.com/tag1216/items/7ce35b7c27d371165e56)
- [evalコマンドを用いた変数の2重展開 | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2015/01/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7eval%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E5%A4%89%E6%95%B0%E3%81%AE2%E9%87%8D/)
- [ファイルのサイズを取得する - Linuxと過ごす](http://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)
- [ディレクトリ内のファイルに対してループ処理 - Qiita](http://qiita.com/elzup/items/e839a8c4e815808fb4bc)
- [パス文字列からファイル名などを抜き出す - Qiita](http://qiita.com/ktr_type23/items/94747a4b27e8a630ce48)
- [ファイルのテキスト読み込み | Tips of Rubbish](http://wordpress.ideacompo.com/?p=4563)

## ファイルの内容がCSVみたいに区切り文字で区切られていたら

- [bashでカンマ区切りのファイルを読み込み、変数を設定する。 - 感謝のプログラミング 10000時間](http://blog.codebook-10000.com/entry/20130906/1378463385)
- [シェル・スクリプト・リファレンス - 【 文字列を抜き出す「cut」 】：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231159/)
- [bash でカンマ区切り文字を split して変数に代入](https://futuremix.org/2011/02/bash-split-cvs)

# 関数にチャレンジしてみる
- [関数の使用方法 | UNIX &amp; Linux コマンド・シェルスクリプト リファレンス](http://shellscript.sunone.me/function.html)
- [シェルスクリプトで関数を利用する - Qiita](http://qiita.com/kaw/items/034bc4221c4526fe8866)
- [判定処理 > シェルスクリプト(bash)のif文とtestコマンド([])自分メモ - Qiita](http://qiita.com/toshihirock/items/461da0f60f975f6acb10)
- [bashで引数に配列を設定する方法: 小粋空間](http://www.koikikukan.com/archives/2013/09/13-025555.php)
- [終了ステータス | UNIX &amp; Linux コマンド・シェルスクリプト リファレン](https://shellscript.sunone.me/exit_status.html)

## ループで処理を作ってみる
- [bashのfor文のまとめ: 小粋空間](http://www.koikikukan.com/archives/2014/03/03-015555.php)
- [breakとcontinue](http://www.fireproject.jp/feature/bash/basic/break-continue.html)


# Linuxコマンドを使いたい
- [Linuxコマンドでやりたいことをやるためのリンク集 - Qiita](http://qiita.com/ponsuke0531/items/73895dcdbb5ddd7d3331)
- [Linuxコマンドでとにかくいろいろ探したい時のリンク集 - Qiita](https://qiita.com/ponsuke0531/items/73817238d5d49a3dd449)

# 実行してみる
```sh
$ bash {ファイル名}.sh
```

- [bash シェルスクリプト入門 -シェルスクリプトのいろは- | UNIX &amp; Linux コマンド・シェルスクリプト リファレンス](http://shellscript.sunone.me/tutorial.html#シェルスクリプトを実行する)


# コーディング規約的なものを知っておく
- [bashコーディング規約 - Qiita](http://qiita.com/mashumashu/items/f5b5ff62fef8af0859c5)
- [今さら聞けない、変数や関数の命名規則と、まず覚えるべき英単語200 | OXY NOTES](http://oxynotes.com/?p=8679#4)
- シェバンってものがある
    - [/bin/sh と /bin/bash の違い - 双六工場日誌](http://sechiro.hatenablog.com/entry/20120806/1344267619)