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

More than 3 years have passed since last update.

実行パーミッションのついたシェルスクリプトを自動作成するシェルスクリプトを作ってみた

Last updated at Posted at 2021-07-11

背景

新しい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

上記のような処理になるシェルスクリプトになっています

まとめ

こんな簡単なシェルスクリプトでも面倒な作業は自動化できるよ!というお話でした。
誰かしらの役に立てば幸いです。

参考文献

新しいLinuxの教科書

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