使用例を添えて。
成果物
情報源
man bash
メタ文字
種類 | 和名 | 概要 |
---|---|---|
blank | 空白文字 | <space> , <tab> |
word(token) | 単語 | シェルが1単位とみなす文字列。 |
name(identifire) | 名前(識別子) | 英数字と_ で構成されたもの(最初の字は英字か_ ) |
meta-character | メタ文字 | クォートされていない場合に単語区切りとなる文字。| , & , ; , ( , ) , < , > , <space> , <tab> |
control-operator | 制御演算子 | 制御機能を持つトークン。|| , & , && , ; , ;; , ( , ) , | , |& , <newline> |
予約語
!
, case
, do
, done
, elif
, else
, esac
, fi
, for
, function
, if
, in
, select
, then
, until
, while
, {
, }
, time
, [[
, ]]
コメント
行頭に#
を付与する。
# コメント
エスケープシーケンス
字 | 意味 |
---|---|
\ |
改行エスケープ(行末にあるとき) |
\a |
警告 (ベル) |
\b |
バックスペース |
\e |
エスケープ文字 ANSI escape code |
\E |
エスケープ文字 ANSI escape code |
\f |
フォームフィード |
\n |
改行 |
\r |
復帰 (carriage return) |
\t |
水平タブ |
\v |
垂直タブ |
\\ |
バックスラッシュ |
\' |
シングルクォート |
\" |
ダブルクォート |
\nnn |
8 進値が nnn である 8 ビット文字 (1 文字につき数字 1〜3 桁) |
\xHH |
16 進値が HH である 8 ビット文字 (16 進で 1〜2 桁)。 |
\uHHHH |
16 進値が HHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜4 桁)。 |
\UHHHHHHHH |
16 進値が HHHHHHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜8 桁)。 |
\cx |
control-x の文字(例: \cd でCtrl +D ) |
エスケープシーケンスを解釈して出力する。
echo -e 'A\tB\n1\t2'
クォートをエスケープする例。
echo "I'm Andy." echo 'I'\''m Andy.'
URL='https://example.com' echo "<a href=\"${URL}\"></a>" echo '<a href="'"${URL}"'"></a>'
使用例
echo 'A' echo 'B'
echo 'A'; echo 'B'; echo 'A'; echo 'B'; echo 'A' && echo 'B';
echo 'A' & echo 'B'; { echo 'A'; sleep 2; } & echo 'B';
(echo 'A'; echo 'B') { echo 'A'; echo 'B'; } (echo 'A' && echo 'B') { echo 'A' && echo 'B'; }
[ 1 -eq 1 ] && echo 'TRUE' || echo 'FALSE'; [ ! 1 -eq 1 ] && echo 'TRUE' || echo 'FALSE'; [ 1 -eq 1 -a 1 -eq 2 ] && echo 'TRUE' || echo 'FALSE'; [ 1 -eq 1 -o 1 -eq 2 ] && echo 'TRUE' || echo 'FALSE'; [ 'A' = 'A' ] && echo 'TRUE' || echo 'FALSE';
[[ A = A ]] && echo 'TRUE' || echo 'FALSE'; [[ A = A && B = C ]] && echo 'TRUE' || echo 'FALSE'; [[ A = A || B = C ]] && echo 'TRUE' || echo 'FALSE';
_NAME1='N'; echo "$_NAME1"; NAME='N'; echo '$NAME'; echo "$NAME";
echo -e 'A\nB' | grep 'B' { echo Out; echo Err >&2; } |& cat
echo A > a.txt echo A >| a.txt cat < a.txt
NAME=A; case $NAME in A) echo 'NAME is A.';; B) echo 'NAME is B.';; *) echo 'Another...';; esac
NAME=A case $NAME in A) echo 'NAME is A.';; B) echo 'NAME is B.';; *) echo 'Another...';; esac
while [ 1 -eq 1 ]; do echo 'while!'; break; done; until [ ! 1 -eq 1 ]; do echo 'while!'; break; done;
if [ 1 -eq 1 ]; then echo '1=1'; fi if [ 1 -ne 1 ]; then echo '1=1'; else echo '1!=1'; fi if [ 1 -eq 2 ]; then echo 'if'; elif [ 1 -eq 1 ]; then echo 'elif'; else echo 'else'; fi
for ((i=0; i<5; i++)); do echo 'i='"$i"; done; for i in {a..g}; do echo 'i='"$i"; done;
select selected in {AA,BB}; do echo 'select is '"$selected"'.' && break; done; select selected in {AA,BB}; do case $selected in AA|BB) echo 'select is '"$selected"'.' && break;; esac; done; select selected in {AA,BB}; do case $selected in AA|BB) echo 'select is '"$selected"'.' && break;; \*) continue;; esac; done;
time sleep 2
function MyFunc() { echo F; } MyFunc() { echo F; } MyFunc
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux