見出し画像

shellscript メモ書き

シェルスクリプトで利用するために、bashでのシェルスクリプト作成と実行についてメモ書きする。

※説明するモノではないので説明を求めていたら無視してください🙇‍♂️

■シェルファイルに実行権限の付与

誰にも実行権限がない状態なので、実行権限を所有者に付加

$ chmod 744 filename.sh

・実行方法

bashコマンドで実行, コマンドとして実行

# bashコマンドで実行
$ bash filename.sh

 
# コマンドとして実行
$ ./filename.sh

その他にPATHを設定してから実行する。定期的に利用したい場合は.bashrcか.bash_profileに書き込む。自分は.bash_profileに書き込むことにしよう。ファイルの場所は""にあるよ。なかったら自分で作る。

# PATHを設定して実行
$ export PATH=$PATH:

# .bash_profileに書き込む
todo


# 確認するとき (確認方法は複数パターンがある)
$ echo $PATH

$ printenv

■スクリプトの書き方

命令文は1行ずつ書く最後はセミコロン[;]を付ける。付けなくてもいけそう。

・フォーマット

一般には、シェルスクリプトの冒頭行に書くものを"シバン"というらしい

# 初めの行に以下を記載
#!/bin/sh

# Bash固有の機能を使うためには
#!/bin/bash

・変数(定数)

# 変数,定数 
# 代入は=前後はスペースを空けない, 定数はreadonlyをつける
VAR=1234
readonly VAR=1000

# 参照時は前に$ををつける
$VAR

# コマンドの実行結果を変数に入れるときはバッククォート[`]を用いる (細かく色々あるけど一旦これを覚える) 
VAR=`date`

# 特殊変数
$! : バックグラウンドで実行されたコマンドのプロセスID
$? : 直前に実行したコマンドの終了ステータス
$$ : コマンドのプロセスID
$# : シェルスクリプト実行時の引数の数
$0 : シェルスクリプトのファイル名
$*, $@ : シェルスクリプト実行時の全引数
$1, $2, $3… : N個目の引数の値
※注意点:
大文字と小文字は区別される。
型定義はしない

・if文

# 構文 セミコロン外して改行するのもあり #####
if 条件式1 ; then
 処理1
elif 条件式2 ; then
 処理2
else
 処理3
fi

# 条件式 下のを参考 ###################
test num1 -eq num2
[num1 -eq num2]

# 例文 ##############################
if [num1 -eq num2]; then
    echo "true"
else
    echo "false"
fi

・条件式

########### 数字の条件文 ##########
test num1 -eq num2 ; # (num1=num2)
test num1 -ne num2 ; # (num1≠num2)

test num1 -lt num2 ; # (num1<num2)
test num1 -le num2 ; # (num1≦num2)

test num1 -gt num2 ; # (num1>num2)
test num1 -ge num2 ; # (num1≧num2)

########## 文字列の条件文 ##########
test text1 = text2  ; # (text1=text2)
test text1 != text2 ; # (text1≠text2)

########## ファイル比較の条件文 ##########
test file1 -nt file2 ; # file1 の方が新しいか?
test file1 -ot file2 ; # file1 の方が古いか?

########## ファイル比較の条件文 ##########
test -z string ; # string.length=0 (文字列長)
test -n string ; # string.length>0 (文字列長)

test -d file ; file がディレクトリならば真
test -f file ; file が普通のファイルならば真
test -s file ; file が 0 より大きいサイズならば真
test -e file ; file が存在するならば真

test -r file ; file が読み取り可能ならば真
test -w file ; file が書き込み可能ならば真
test -x file ; file が実行可能ならば真

########## And Or 条件 ##########
# -a の優先順位が -o より高いため、-a が先に評価される
if test 条件式1 -a 条件式2; then ; #AND条件 
if test 条件式1 && 条件式2; then ; #AND条件 

if test 条件式1 -o 条件式2; then ; #OR条件 
if test 条件式1 || 条件式2; then ; #OR条件 

# 色々あるから一旦これくらいあれば対応できると思うからここまで

・関数

関数の書き方、引数、戻り値について

# 構文 (functionは省略可)
function method() {
    処理
}
method

# 例文
method() {
    echo "text"
}

method

関数に色々な処理があるので別途記載

# include ファイルの読み込み  #####################
source ./functions

# 引数 ########################################
# 引数を入力するときはスペースを空けて追加、使うときは特殊変数を用いる
method() {
    echo "$1"
}
method "text"

# 戻値 #######################################
# 戻り値はreturnコマンドの引数に指定できる値は、0 もしくは 1~255 の正の整数値のみ
method() {
    return 123
}
echo $?

■よく使うコマンド

使いながら追加していきます!

・通知、ダイアログを表示

Applescriptを呼び出して行なう

# 通知の呼び出し方
osascript -e 'display notification "本文がこちらに記述" with title "タイトルの表示" sound name "Submarine"'
# ダイアログの呼び出し方 (アプリから呼び出すのに許可をしないといけないです)
osascript -e 'tell app "System Events" to display dialog "Hello World"'

スクリーンショット 2021-11-23 22.53.17

スクリーンショット 2021-11-23 22.54.56

そして、知りたいけどまた内容を整理するためにメモ

・定期実行 - corn( crontab )
・ログの出力 - ファイルにログを書き込む
・デバック方法


参考資料

詳しく理解したいときは色々な方々にご教授願う...ありがとうございます。
変数: 

if文:

ファイル、ディレクトリの権限:


この記事が気に入ったらサポートをしてみませんか?