0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【shell】ややこしシャルスクリプト書き方まじリスペクト

Posted at

はじめに

実務でシェルをかく機会があり、そこで変数を代入したり変数を指定して取得したりするコードをかいています。

ややこしいのを一旦整理してみます。

シェルに値を宣言し代入

変数に代入するときは=を使います。等号の前後にスペースを入れてはいけません。

.sh
STAGE=st
.sh
Hey="Hello, World!"

変数の参照パターン1

変数名の前に$をつけます。
簡潔でよみやすく、一般的な用途で使いたおせそうですね。

.sh
echo $STAGE

実行結果

st

変数の参照パターン2

変数を${}で囲うパターン
変数名の境界を明確にしてくれます。変数後に文字列が続くときに有効です!

.sh
TEST_A=apple
TEST_B=${TEST_A}pie🍎
echo $TEST_B

実行結果

applepie🍎

変数の参照パターン3

文字列を""で囲うパターン
空白の値を文字列として扱います。空白を含む値や特殊文字を保持します。

.sh
message="Hello World"
echo $message

実行結果

Hello World

コマンドの実行結果を参照し代入する

パターン1

``でコマンドを囲うパターン

.sh
TODAY=`date '+%Y%m%d'`
echo $TODAY

実行結果

20241021

パターン2

$()でコマンドを囲うパターン

.sh
TODAY=$(date '+%Y%m%d')
echo $TODAY

実行結果

20241021

変数を参照するコマンドの実行結果を代入し出力

パターン1

``でコマンドを囲うパターン

.sh
MONTH_DAY=$(date '+%Y%m%d')  
MONTH_DAY_OUTPUT=`echo "$MONTH_DAY" | awk '{print substr($0, 5)}'`   

echo $MONTH_DAY_OUTPUT

実行結果

1021

パターン2

$()で囲うパターン

.sh
MONTH_DAY=$(date '+%Y%m%d')
MONTH_DAY_OUTPUT=$(echo ${MONTH_DAY} | awk '{print substr($0, 5)}')

echo $MONTH_DAY_OUTPUT

実行結果

1021

おわりに

変数を参照するさいに、$()なのか${}なのか、よくわからなくなりましたがここでまとめたので頭すっきりです。

ガンガンつかっていきましょう。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?