Skip to main content

[書評] シェル・ワンライナー160本ノックの2.1章の不明点をまとめる

[書評] シェル・ワンライナー160本ノックの1章を読んでわからないことをまとめる
の続編

シェル芸人を目指してるマスタカです。
2.1 変数と制御構文,コマンドの入出力操作を把握する
を読んだので不明点をまとめる


・2>&1
標準出力と標準エラーを混ぜてリダイレクトする
https://qiita.com/TomohiroSaito/items/1393ce5a01b75adcbf30

標準出力をパイプで繋ぐ
aaa 2> a.txt
aaa 2>&1 | wc -l
aaa |& wc -l

 

・文字列の一部切り出し
>Bashの変数は、 ${STR:offset:length} の形式で参照することで文字列の一部を切り出すことができます。
https://genzouw.com/entry/2020/01/18/113034/1894/

・文字列の置換
${変数名/パターン/置換}
https://www.pmi-sfbac.org/string-replacement/

 

・bashで計算

a=6
b=2
echo $((a+b))

・bashとawkの文字列の区別
Bashの$1とAWKの$1を区別するためにAWKは”で囲う

 

・連想配列

declare -A b
b["SHELL"]="$SHELL"
echo $b
/bin/zsh
b["LANG"]="$LANG"
echo $b
ja_JP.UTF-8 /bin/zsh
echo $b["SHELL"]
/bin/zsh
echo $#b
2
echo $b[@]
ja_JP.UTF-8 /bin/zsh
echo $b[*]
ja_JP.UTF-8 /bin/zsh
echo $#b[*]
2

 

・シェルのif文

 

・factor
素因数分解してくれる
brew install coreutils
でmacでも使えるようになる
https://takuya-1st.hatenablog.jp/entry/2017/05/09/073000

 

・変数が空だったら代入する
:-
https://qiita.com/hasegit/items/d9392b6dbfea89bc329f

 

・$?
直前の終了コードの取得
https://teratail.com/questions/95660

 

・zsh: no matches found: [a-z]
シングルクォートで囲う
cat a.txt | tr ‘[a-z]’ ‘[A-Z]’
https://stackoverflow.com/questions/62266314/zsh-no-matches-found-space

 

・区切り文字
IFS=-
これした後にreadすると良い感じになる

echo pen-pineapple-apple-pen | while read a b c d; do echo $a $b $c $d; done
pen pineapple apple pen

 

関連記事:

Pocket