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時間