Open3
shell

基本
- .shのファイル
- \で改行
touch test.sh
#!/bin/bash
echo 'Hello world!' \
'Like' \
'Hoge'
➜ shell_test bash test.sh
Hello world! Like Hoge
- ; で別々のコマンドとして判定
#!/bin/bash
echo 'Hello world!'; pwd; echo 'End world!';
変数
var='value'
echo $var
// ${}は変数展開
echo ${var}
// ""の有で hello world を一つの文字として認識
echo "${var}"
シングルとダブルクオート
// シングル
var1=value
var2='${var1}'
echo $var2
=> ${var1}
// ダブルクオート
var1=value
var2="${var1}"
echo $var2
=> value
引数
// $0はファイル名
#!/bin/bash
echo $0
echo $1
echo 'Hello world!' \
'Like' \
'Hoge'
➜ shell_test bash test.sh aa bb
test.sh
aa
配列
array=(item1 item2)
echo '${array[0]}': ${array[0]}
echo '${array[1]}': ${array[1]}
➜ shell_test bash array.sh
${array[0]}: item1
${array[1]}: item2
➜ shell_test
if
- grepで testが test.shにあればsuccess
if grep -n test test.sh; then
echo $?
echo success
else
echo $?
echo fail
fi
- 引数あり
- [] 条件判定
if [ "$1" = "test" ]; then
echo success
else
echo fail
fi
// 結果
➜ shell_test bash if.sh
fail
➜ shell_test bash if.sh test
success
for
array=(aaa 'bbb ccc' ddd)
for element in "${array[@]}"; do
echo $element
done
リダイレクト
- 標準入力: 0
- 標準出力: 1
- 標準エラー出力: 2
/dev/null
- ブラックホール、エラーを握りつぶしたりする

関連コマンド
awk
awk '{print $9}' などで shellとは全く別 && ""で囲うとまた意味が違う
sed
sed -E "s/-(20[0-9]{6}|[0-9]{8})\.log\.gz$//"
grep
grep [オプション] 検索パターン ファイル名 [ファイル名] #ファイル名は複数指定できる
tr
ls
- l: 全てのデータ
- S: sort
## -l
➜ shell_test ls -l
total 72
-rw-r--r--@ 1 akifumi.watanabe staff 40 7 9 12:54 hoge.sh
-rw-r--r--@ 1 akifumi.watanabe staff 6149 7 9 12:30 prd_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:29 test_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:30 test_log2.txt
## -S sort
➜ shell_test ls -l
total 72
-rw-r--r--@ 1 akifumi.watanabe staff 40 7 9 12:54 hoge.sh
-rw-r--r--@ 1 akifumi.watanabe staff 6149 7 9 12:30 prd_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:29 test_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:30 test_log2.txt
➜ shell_test ls -lS
total 72
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:29 test_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 12114 7 9 00:30 test_log2.txt
-rw-r--r--@ 1 akifumi.watanabe staff 6149 7 9 12:30 prd_log.txt
-rw-r--r--@ 1 akifumi.watanabe staff 40 7 9 12:54 hoge.sh
jq
- json
- '{"level": "aaa", "message": "value"}'
sort
uniq
head