
t0mmy
2020年12月30日に参加
学習履歴詳細
Shell Script 基礎
やったこと
書籍「新しいシェルプログラミングの教科書」
&>
- ヒアドキュメント
- パイプ
- コマンドのグループ化
学んだこと
&>
2>&>
と同じ。
標準出力、および標準エラー出力を、リダイレクト先のファイルに書き出す。
&
は、「マージする」のような意味。
2>&1
... 標準エラー出力を、標準出力にマージする
2>1
とすると、「標準エラー出力を、"1"という名前のファイルにリダイレクトする」という意味になる。
ヒアドキュメント
ヒアドキュメント中では、パラメータ展開が可能。
#!/bin/bash greet='hello' cat << HELLO $greet hoge fuga test HELLO
パラメータを展開したくない場合、終了文字をシングルクォートでくくる。
<<
の代わりに <<-
を使用すると、ヒアドキュメント中の行頭タブが削除される。
<<<
はヒアストリング。
以下のように記述することで、ヒアドキュメントを変数化できる。
#!/bin/bash greet='hello' sample=$(cat<< HELLO $greet hoge fuga test HELLO ) echo $sample
パイプ
標準出力、標準エラー出力の二つを、まとめてパイプできる。
ls /usr /xxx 2>&1 | less
上記コマンドは、以下の短縮形も存在する。
ls /usr /xxx |& less
コマンドのグループ化
{ command command ... }
以下二つのプログラムは同義。
#!/bin/bash { date +%Y-%m-%d echo 'test' ls /usr } > result.txt cat result.txt
#!/bin/bash date +%Y-%m-%d > result.txt echo 'test' > result.txt ls /usr > result.txt cat result.txt
一行で書くときは、コマンドの後ろにセミコロンを書く。
$ { date +%Y-%m-%d; echo 'test'; ls /usr; } > result.txt
サブシェル ()
と区別して使用すること。
ShellScript
2022年06月18日(土)
2.0時間