1

私はLinuxが初めてで、プログラミング/スクリプトもbashしています。とにかく、いくつかのことを行う bash スクリプトを作成したかったのです。

  1. コピーするファイルに関する入力を取得します
  2. desフォルダーを取得します
  3. コピーするか移動するか尋ねられます
  4. 必要な操作を行います
  5. 最後に、別のアクションを続行するかどうかを尋ねます

さて、パート2、3、5に関しては大丈夫ですが、パート1はちょっと問題があります. だから、ここにスクリプトがあります。私が間違っている場所とその理由を教えていただければ幸いです:)

#! /bin/bash
#beginning
clear
f=1

Beginning()
{
    echo "HELLO $USER , THIS PROGRAM WILL COPY THE FILES YOU WANT TO YOUR DESIRED DESTINATION DIRECTORY"
    echo -n "please enter the filname/s you want to copy (up to 6 files at a time): ";
    echo
    EnteringF
}

EnteringF()
{
    echo " filename$f : ";
    read cop$f
    Confirm
}

Confirm()
{
    echo "do you wish to copy another file (y/n)?";
    read ans
    if [ "$ans" = "y" ] || [ "$ans" = "Y" ]; then
        f=$[sum=$f+1]
        EnteringF
    elif [ "$ans" = "n" ] || [ "$ans" = "N" ]; then
        Destination
    else
        echo " invalid choice please try again "
        Confirm
    fi
}

Destination()
{
    echo -n "now please enter the destination folder:";
    read dest;
    CopyMove
}
CopyMove() 
{ 
    echo -n "Do you want to copy or move the files/s? please enter c/m? "; 
    read choice; 
    if [ "$choice" = "c" ] || [ "$choice" = "C" ]; then 
        cp "$cop$f" "$dest"; 
        echo "copied successfully" 
        UseAgain 
    elif [ "$choice" = "m" ] || [ "$choice" = "M" ] ; then 
        mv [ "$files" + "$f" ] "$dest"
        echo "moved successfully" 
        UseAgain 
    else 
        echo " invalid choice please try again "; 
        CopyMove 
    fi
}
UseAgain()
{
    echo "Do you want to use the program again y/n?";
    read confirm
    if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
        Beginning
        UseAgain
    elif [ "$confirm" = "n" ] || [ "$confirm" = "N" ]; then
        End
    else
        echo "invalid choice please try again"; UseAgain
    fi
}
End()
{
    clear
    echo "THANK YOU $USER FOR USING THIS PROGRAM :-)" 
}

Beginning

私の主な問題は、cop変数にデータが記録されcpていないため、コピーするものが何もないことです。他のループを使用する必要があるかもしれませんが、他のループの使用方法はまだわかりません。

4

1 に答える 1