LoginSignup
0
1

More than 1 year has passed since last update.

[Linux]シェルスクリプトの基礎知識

Posted at

はじめに

前回に引き続き、Linuxのシェルスクリプの基礎知識についてまとめていきます。

変数の使い方

変数の値を参照するには、変数名の前にをつけます。

test.sh
#!/bin/bash

appdir=/home/tochi/myapp
echo $appdir

変数の書き方についての注意

  • 代入時は$はつけないこと
  • =の前後にはスペースを入れない
  • 変数名に利用できる文字はアルファベットと数値、アンダースコアだけ
  • 変数名の区切りは明示する

※区切りを明確にするときは、変数の部分を{}で囲む

クォーティング

シングルクォートとダブルクォートの違いについて、シングルクォートでは$はそのまま$記号として表現されます。

test.sh
#!/bin/bash

country=Japan
echo 'I live in $country'
echo "I live in $country"
terminal
% ./test.sh
I live in $country
I live in Japan

コマンド置換

コマンド置換では、コマンドの結果を文字列として取得することができます。
なお、これはダブルクォートの中でも有効です。

terminal
% echo "Today is $(date '+%Y-%m-%d')"
Today is 2021-06-09

位置パラメータ

こちらは簡単にまとめておきます。
詳しくはこちらの記事が分かりやすかったです。
http://se.cite.ehime-u.ac.jp/~aman/memo/bash/shell_prog1.html

変数 内容
$0 実行時のシェルスクリプト
$1,$2,, コマンドライン引数の値
$# 位置パラメータの個数
$@ 全ての位置パラメータ、それぞれの位置パラメータがダブルクォートで囲まれる
$* 全ての位置パラメータ、全体が一つの文字列としてダブルクォートで囲まれる

条件分岐

if文

if文ではifの後ろにはコマンドをおきます。

if <コマンド1>; then
 #処理内容
elif <コマンド2>; then
 #処理内容
fi

以下に簡単な例と評価演算子をまとめておきます。

#!/bin/bash

int1=$1
if [ "$int1" -gt 3 ] && [ "$int1" -lt 6 ]; then
 echo "int1 > 3 and int1 < 6"
fi
演算子 内容
文字列に関する評価演算子
s1 = s2 等しい
s1 != s2 等しくない
-n s1 空文字列ではない
-z s1 空文字である
数値に関する演算子
i1 -eq i2 等しい
i1 -ne i2 等しくない
i1 -lt i2 i1がi2より小さい
i1 -le i2 i1がi2以下
i1 -gt i2 i1がi2より大きい
i1 -ge i2 i1がi2以上
ファイル属性に関する評価
-e file fileが存在する
-d file fileは存在し、ディレクトリである
-h file fileは存在し、シンボリックリンクである
-L file 同上
-f file fileは存在し、通常のファイルである
-r file fileは存在し、読み取りパーミッションが与えられている
-w file fileは存在し、書き込みパーミッションが与えられている
-x file fileは存在し、実行パーミッションが与えられている
file1 -nt file2 file1の変更時刻がfile2より新しい
file1 -ot file2 file1の変更時刻がfile2より古い
演算子の結合
条件式1 -a 条件式2 両方が真の場合に真
条件式1 -o 条件式2 どちらかが真の場合に真
!条件式 真偽を逆にする

繰り返し構文

for文

for文は以下のように使用します。

terminal
for 変数名 in リスト
do
 繰り返す処理
done
#!/bin/bash

for name in tanaka yamada toda
do 
 echo $name
done
#実行結果は以下
tanaka
yamada
toda

リスト部分には、コマンド置換をおくことも可能です。

シェル関数

関数は以下のように定義します。

function 関数名 () 
{
  #処理
}

省略形としてfunctionの部分を省くことも可能です。

おわり

かなりざっくりまとめました。
これらの基礎知識を使って、どんなことができるか次回以降まとめていきたいと思います。

0
1
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
1