導入
参考:
文法
- Reserved Words:予約語
- Simple Commands:コマンド
- Pipelines:パイプライン
- Lists:コマンドリスト
- Compound Commands:複合コマンド
- Looping Constructs:繰り返し
- Conditional Constructs:条件分岐
- Command Grouping:グルーピング
- Coprocesses:コプロセス処理 (
coproc
コマンド) - GNU Parallel:並列処理 (
parallel
コマンド)
参考:
Shell Commands | Bash Reference Manual
Shell Grammar Rules | The Open Group Base Specifications Issue 7, 2018 Edition
変数
参考:
Operations on Variables | Bash Guide for Beginners (tldp.org)
case sensitive or not? – Stack Overflow
declare
参考:
declare コマンド – 変数を宣言する | Linuxコマンド.NET
$@ と $* の違い
#! /usr/bin/env bash time "$@"
参考:
$@ (Dollar at Variable) Loses Quote Characters | Biostar
What does “$@” mean in Bash? – Quora
変数名を取り出す
$ i_want_to_know_variable_name="Hey!" $ echo "${!i_want_to_know_variable_name@}"
参考:
In bash, how can I echo the variable name, not the variable value? – Unix & Linux Stack Exchange
間接変数展開 (Indirect Variable Expansion)
$ fire="red!" $ color="fire" $ echo "${!color}" red!
参考:
Bash expand variable in a variable – Stack Overflow
How to use call-by-reference on an argument in a bash function – Unix & Linux Stack Exchange
参照渡し (nameref)
local -n
コマンドで参照渡しの変数を定義する。外部の変数を書き換えられる。
$ function change () \ { \ local -n ref=$1; \ ref="bye"; \ } $ greeting="hello" $ echo $greeting hello $ change greeting $ echo $greeting bye
参考:
Shell Parameters | Bash Reference Manual
Passing arguments by reference – Stack Overflow
Shell variables in a for loop – Unix & Linux Stack Exchange
間接参照
参考:
Indirect References | Advanced Bash-Scripting Guide (tldp.org)
引用符/クオォーテーションの違い
- Weak Quoting:
"$var is replaced"
- Strong Quoting:
'kind of $var is left as is'
- ANSI-C Quoting:
$'kind of \e is replaced escape sequence'
- Locale Translation:
$"string can be localized"
参考:
シェルスクリプトのクォートの使い方と変数埋め込みの方法まとめ | Web 備忘録
シェルの引用符/クォーテーションの使い方 | アナグマのモノローグ
シェルにおけるシングルクォート/ダブルクォート/バッククォートで囲った場合の挙動の違い | NJ-CLUCKER
クォートを含む文字列の展開について – スタック・オーバーフロー
Quotes and Escaping | Bash Hackers Wiki
Quoting Characters | Bash Guide for Beginners
ANSI-C Quoting | Bash Reference Manual
Locale Translation | Bash Reference Manual
二重引用符/ダブルクォーテーション
参考:
シェルスクリプトの変数はダブルクォートしなければいけない!という話 – Qiita
How to escape a double quote inside double quotes? – Stack Overflow
Why do we double-quote a dollar sign evaluation in Bash? – Unix & Linux Stack Exchange
ダブルクォーテーションとシングルクォーテーションの違い
参考:
Shell Script のダブルクォートとシングルクォートの違い – Qiita
ANSI-C クォーティング
参考:
ANSI-C Quoting | Bash Reference Manual
How does the leading dollar sign affect single quotes in Bash? – Stack Overflow
How to escape quotes in shell? – Unix & Linux Stack Exchange
ロケールトランスレーション
参考:
Locale Translation | Bash Reference Manual
What does it mean to have a $”dollarsign-prefixed string” in a script? – Unix & Linux Stack Exchange
コプロセス (coproc)
参考:
Coprocesses | Bash Reference Manual
How do you use the command coproc in various shells? – Unix & Linux Stack Exchange
リファレンス
Bash Reference Manual (All in One Page) | GNU.org
Bash Reference Manual (Separate Contents) | GNU.org