背景
新しいLinuxの教科書を参考にシェルスクリプトの勉強をしていたのですが、
毎回 chmod +x
で実行パーミッションを付与するのが面倒だったので、作成されたシェルスクリプトに実行パーミッションを自動付与するシェルスクリプトを作ってみました。
シェルスクリプト作成
早速、シェルスクリプトを作成していきます
$ vim autox.sh
autox.sh
#!/bin/bash
if [ -n "$1" ]; then
cd ~/bin
filename=$1
scriptname="$filename".sh
touch $scriptname
chmod +x $scriptname
vim $scriptname
else
exit 1
fi
どうなってるかはコメント付きで後で書きます
このシェルスクリプトの使い方は、(xxxx).shのxxxx部分の名前にしたいファイル名を引数に取ってシェルスクリプトを実行する といった形になります
$ chmod +x autox.sh
$ ./autox.sh
$ echo $?
1
$ ./autox.sh testfile
$ ls -l
# (中略)
-rwxrwxr-x. 1 hoge hoge 12 Jul 11 08:01 testfile.sh
引数なしでautox.shを実行するとファイルは作成されず、終了ステータスは1を返しています
引数にファイル名を取ってautox.shを実行すると(ファイル名).shが作成され、実行パーミッションが付与されます。
(vimの編集画面に入ると思います)
シェルスクリプトの説明
以下にコメント付きでシェルスクリプトを書いていきます
autox.sh
#!/bin/bash
if [ -n "$1" ]; then # 引数が空文字列ではない場合、
cd ~/bin # ~/binに移動し、
filename=$1 # 変数filenameに引数を代入し、
scriptname="$filename".sh # 変数scriptnameに(ファイル名).shを代入し、
touch $scriptname # (ファイル名).shを作成し、
chmod +x $scriptname # (ファイル名).shに実行パーミッションを付与し、
vim $scriptname # (ファイル名).shの編集画面に遷移する
else # 引数が空文字列の場合、
exit 1 # 終了ステータスを1にする
fi
上記のような処理になるシェルスクリプトになっています
まとめ
こんな簡単なシェルスクリプトでも面倒な作業は自動化できるよ!というお話でした。
誰かしらの役に立てば幸いです。