MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. サーバー技術
  4. シェルスクリプトで引数を利用する

シェルスクリプトで引数を利用する

2019 2/24
サーバー技術
2014年4月1日2019年2月24日

今回はシェルスクリプトで引数を利用してファイルの変更を実施するスクリプトを作ってみます。
コマンド実行時に引数を2つ与えて1つ目を指定したファイル2つ目を変更するファイルにするスクリプトを作成します。

質問して入力された2つのファイルを作成するスクリプト

参考:シェル・スクリプト工房第3回(課題)

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

ファイルを変更スクリプトを作成

コマンド実行時に引数を2つ入力し、1つ目の引数として入力したファイルの名称を2つ目の引数名に変更するスクリプトを作成する。
また、引数が2つ以外の場合はコマンドの使い方を表示するようにする。

スクリプト作成

vi 3test.sh
#!/bin/sh

if [ $# -eq 2 ]
then
mv $1 $2
else
echo "使い方:rename.sh 元ファイル 変更ファイル名"
fi

それでは以下で実行

[root@t-bobo011 ~]# ll
合計 112
-rw-r--r--. 1 root root   101  8月 29 16:09 2013 2renshu.sh
-rw-r--r--. 1 root root   167  8月 29 16:22 2013 2test-1.sh
-rw-r--r--. 1 root root   114  8月 29 18:41 2013 3test.sh
-rw-------. 1 root root  1515  8月  6 05:56 2013 anaconda-ks.cfg
-rw-r--r--. 1 root root 68568  8月  6 05:56 2013 install.log
-rw-r--r--. 1 root root 10721  8月  6 05:54 2013 install.log.syslog
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 kkk
-rw-r--r--. 1 root root     0  8月 29 16:32 2013 script_test
-rwxrwxrwx. 1 root root    96  8月 22 19:14 2013 test-1
-rw-r--r--. 1 root root   185  8月 22 19:23 2013 test-2
-rw-r--r--. 1 root root   135  8月 23 09:33 2013 test-3.sh
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test1
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test2
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 yyy

kkk→kkk-2へ変更、yyy→yyy-2へ変更する。

[root@TEST ~]# sh 3test.sh kkk kkk-2
[root@TEST ~]# ll
合計 112
-rw-r--r--. 1 root root   101  8月 29 16:09 2013 2renshu.sh
-rw-r--r--. 1 root root   167  8月 29 16:22 2013 2test-1.sh
-rw-r--r--. 1 root root   114  8月 29 18:41 2013 3test.sh
-rw-------. 1 root root  1515  8月  6 05:56 2013 anaconda-ks.cfg
-rw-r--r--. 1 root root 68568  8月  6 05:56 2013 install.log
-rw-r--r--. 1 root root 10721  8月  6 05:54 2013 install.log.syslog
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 kkk-2
-rw-r--r--. 1 root root     0  8月 29 16:32 2013 script_test
-rwxrwxrwx. 1 root root    96  8月 22 19:14 2013 test-1
-rw-r--r--. 1 root root   185  8月 22 19:23 2013 test-2
-rw-r--r--. 1 root root   135  8月 23 09:33 2013 test-3.sh
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test1
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test2
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 yyy

→kkk→kkk-2へ変更された。

[root@t-bobo011 ~]# sh 3test.sh yyy yyy-2
[root@t-bobo011 ~]# ll
合計 112
-rw-r--r--. 1 root root   101  8月 29 16:09 2013 2renshu.sh
-rw-r--r--. 1 root root   167  8月 29 16:22 2013 2test-1.sh
-rw-r--r--. 1 root root   114  8月 29 18:41 2013 3test.sh
-rw-------. 1 root root  1515  8月  6 05:56 2013 anaconda-ks.cfg
-rw-r--r--. 1 root root 68568  8月  6 05:56 2013 install.log
-rw-r--r--. 1 root root 10721  8月  6 05:54 2013 install.log.syslog
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 kkk-2
-rw-r--r--. 1 root root     0  8月 29 16:32 2013 script_test
-rwxrwxrwx. 1 root root    96  8月 22 19:14 2013 test-1
-rw-r--r--. 1 root root   185  8月 22 19:23 2013 test-2
-rw-r--r--. 1 root root   135  8月 23 09:33 2013 test-3.sh
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test1
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test2
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 yyy-2

→yyy→yyy-2へ変更された。

間違ったファイルを指定するとエラーを出すように改造

medium_9099910544
photo credit: infocux Technologies via photopin cc

先ほどの設定で1つ目の引数に与えられた引数が存在しない、または与えられた引数と同じ名前のファイルが他に存在した場合にエラー・メッセージを表示するようにスクリプトを改造する。

参考:シェル・スクリプト工房

それでは前回のファイル(3test.sh)を改造するっす。

[root@t-bobo011 ~]# vi 3test.sh
#!/bin/sh
if [ $# -eq 2 ]
then
if [ -e $1 -a ! -e $2 ]
then
mv $1 $2
else
echo "ファイル名の指定が間違っています"
fi
else
echo "使い方:3testsh 元ファイル 変更ファイル名"
fi
~

それでは以下で実行

[root@t-bobo011 ~]# ll
合計 112
-rw-r--r--. 1 root root   101  8月 29 16:09 2013 2renshu.sh
-rw-r--r--. 1 root root   167  8月 29 16:22 2013 2test-1.sh
-rw-r--r--. 1 root root   209  8月 30 11:22 2013 3test.sh
-rw-------. 1 root root  1515  8月  6 05:56 2013 anaconda-ks.cfg
-rw-r--r--. 1 root root 68568  8月  6 05:56 2013 install.log
-rw-r--r--. 1 root root 10721  8月  6 05:54 2013 install.log.syslog
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 kkk
-rw-r--r--. 1 root root     0  8月 29 16:32 2013 script_test
-rwxrwxrwx. 1 root root    96  8月 22 19:14 2013 test-1
-rw-r--r--. 1 root root   185  8月 22 19:23 2013 test-2
-rw-r--r--. 1 root root   135  8月 23 09:33 2013 test-3.sh
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test1
-rw-r--r--. 1 root root     0  8月 29 17:20 2013 test2
-rw-r--r--. 1 root root     0  8月 29 18:42 2013 yyy

存在しないファイルを指定して実行してみる。

[root@t-bobo011 ~]# sh 3test.sh kkk-2 kkk
ファイル名の指定が間違っています

既に存在しているファイルへ変更してみる。

[root@t-bobo011 ~]# sh 3test.sh kkk yyy
ファイル名の指定が間違っています

引数とファイル名が間違っていたり、既に存在するファイルに
置き換えようとした際にエラー・メッセージを出してくれた。

まとめ

やはり、シェルスクリプトでも、プログラミングでも、どんどんコマンド叩いて作っていかないと覚えないっすよね。
とりあえず、打つべし!打つべし!です!

以上です。

あわせて読みたい
サーバーエンジニアへの構築手順書 サーバエンジニアにおすすめの構築手順をまとめたページです。 サーバ初心者の方。じぶんも初心者なので、そっから目線で構築した設計手順書となっています。 ご興味の...
エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

サーバー技術
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次