#!/bin/bash case $# in # ケース文を使い、引数に応じてスクリプトの動作を変える。 0) # 引数がゼロの場合、転送元ディレクトリは ~/test , 転送先ディレクトリは itpass.scitec.kobe-u.ac.jp:~/test とする。 echo '転送されるファイルは以下の通りです' echo "/home/$USER/test:" ls -al /home/$USER/test echo ' ' # lsコマンドを使って転送するディレクトリの中身を画面に表示し、確認する。 echo '実行されるコマンドは以下の通りです' echo "scp -r /home/$USER/test $USER@itpass.scitec.kobe-u.ac.jp:/home/$USER/test" echo ' ' # 実行するコマンドの確認。変数を処理するために、echoコマンドでは" "で囲む。 echo '実行してよろしいですか? [y/n]' read answer if [ $answer = y ] # if文を使って、本当に転送を実行するかの最終確認を行う。返答が y とそれ以外の場合で動作を変える。 then scp -r /home/$USER/test $USER@itpass.scitec.kobe-u.ac.jp:/home/$USER/test # y と答えた場合、実際に転送を実行。 else exit 1 # n も含め、y 以外の答えを入力した場合は何もせずに終了する。 fi ;; 1) # 引数が一つの場合、確認メッセージなしですぐに転送を実行する。 scp -r /home/$USER/test $USER@itpass.scitec.kobe-u.ac.jp:/home/$USER/test # 転送元・転送先のディレクトリの指定はないので引数ゼロの場合と同様、転送元ディレクトリは ~/test , 転送元ディレクトリは itpass.scitec.kobe-u.ac.jp:~/test で行う。 ;; 2) # 引数が二つの場合、一つ目の引数を転送元、二つ目の引数を転送先ディレクトリとして判断、処理する。 echo '転送されるファイルは以下の通りです' echo "$1" ls -al $1 echo ' ' # 転送元ディレクトリの中身の確認。 echo '実行されるコマンドは以下の通りです' echo "scp -r $1 $USER@itpass.scitec.kobe-u.ac.jp:$2" echo ' ' # 実行するコマンドの確認。 echo '実行してよろしいですか? [y/n]' read answer if [ $answer = y ] # 本当に転送を実行するかの最終確認。転送元を$1,転送先を$2で指定する以外は、引数ゼロの場合と同様である。 then scp -r $1 $USER@itpass.scitec.kobe-u.ac.jp:$2 else exit 1 fi ;; 3) # 引数が三つの場合、二つ目の引数を転送元、三つ目の引数を転送先ディレクトリとして判断した上で、確認メッセージなしで転送を実行する。 scp -r $2 $USER@itpass.scitec.kobe-u.ac.jp:$3 # 転送元を$2,転送先を$3で指定。 ;; esac