2つの引数を受け入れて確認し、最初の(ファイル)引数を2番目の(ディレクトリ)引数にコピーする単純なBASHシェルスクリプトを作成します。

2つの引数を受け入れて確認し、最初の(ファイル)引数を2番目の(ディレクトリ)引数にコピーする単純なBASHシェルスクリプトを作成します。

数日前から、私はシェルでスクリプトを書く方法を学び始めました。 2つのパラメータ(ファイル名と特定のディレクトリ)を使用するスクリプトをどのように作成できますか?パラメータが間違っている場合はエラー警告を表示し、正しい場合はそのディレクトリにファイルをコピーしたいと思います。これまで私はこれをしました:

#!/bin/bash
if [ -d $1 ] ; then
 ???
 done
else
 echo $1 NOT DIRECTORY
 exit 1
fi

ファイルを確認するためのセクションを別々に作成しました。これをどのように組み合わせますか?

#!/bin/bash
if [ $# -ne 1 ]
then
 echo "Use- $0 file"
 exit 1
fi
if [ -f $1 ]
then
 echo "$1 There is no file with that name"
else
 echo "$1 There is no file with that name"
fi

私は初めてbashスクリプトに触れて助けをしたいと思います。

答え1

次の構造を使用できます。

  • まず、パラメータの数が正しいことを確認してください。この場合は2つです。

    if arguments not 2
      message "Not enough arguments" and exit
    
  • パラメーターが有効なファイルとディレクトリーであることを確認してください。

    if argument1 not a file
      message "Not af file" and exit
    
    if argument2 not a directory
      echo "Not a directory" and exit
    
  • 両方のパラメータが正しい場合、コピーが実行されます。

    message "Copying file"
    copy file to directory
    

スクリプトがまだ実行されないように、エラーが発生したときに終了することを忘れないでください。

次の場合は、代わりにライナーを使用することもできます。

[[ ! -f "$1" ]] && echo "Not a file" && exit

関連情報