住宅検査

住宅検査

これを解決するには?

ファイルのコピーを作成します。

  • ファイルは現在のディレクトリ(ユーザーが指定したファイル名)になければなりません。
  • ユーザーが指定した宛先ディレクトリの名前。

これが私がどれだけ離れてきたかです:

echo "Enter the name of the file:"
read filename 
cp -r /home/$FILE ;;

少しだけ情報を追加すると、全体の練習の基礎になります。

スクリプトは、次のオプションを含むメニューを提供する必要があります。

1. To create a backup copy of a script file. 

バックアップコピー名には、スクリプト名の後にバックアップを含める必要があり、日付スタンプを表示する必要があります(例:work3Script_backup_10_11_2015)。

これは、ホームディレクトリの環境変数を使用してホームディレクトリに保存する必要があります。

スクリプトはファイルが存在し、通常のファイルであるかどうかを確認する必要があります。そうでない場合、スクリプトは、有効なファイル名が入力されるまでユーザーがファイル名を再入力できるようにする必要があります。

2. To create a date stamped log file called e.g. log_file_10_11_2015   
   containing 

 >  A list of who is logged into the system

 >  The disk usage and

 >  Your currently running processes. 

 >  The file should be saved to an existing directory called log_dir which 
   should 
   be situated off your home directory


3. To create a copy of a file.   

ファイルは現在のディレクトリ(ユーザーが指定したファイル名)になければなりません。

ユーザーが指定した宛先ディレクトリの名前。

スクリプトはファイルが存在し、通常のファイルであるかどうかを確認する必要があります。そうでない場合、スクリプトは、有効なファイル名が入力されるまでユーザーがファイル名を再入力できるようにする必要があります。

スクリプトは、ターゲットディレクトリが存在することを確認する必要があります。そうでない場合、スクリプトは、有効なディレクトリが入力されるまで、ユーザーがターゲットディレクトリに再び入ることを許可する必要があります。

私が作ったメニューはこんな感じです。

#!/bin/bash

while true
do
echo "=============================="
echo            "Menu"
echo "=============================="
echo "Option 1 Backing up files: "
echo "Option 2 Date stamped log file: "
echo "Option 3 Create a copy of a file: "
echo "Option 4 Moving a file to place giving by the user: "
echo "Enter q to quit the menu: "
echo -e "\n"
echo -e "Enter your option: \c"
read answer
case "$answer" in

1) while true ; do
   echo "Enter the file name:"
   read filename
   if [ -f "$filename" ]; then
       echo "The file exists."
       break
   else
       echo "File doesn't exist."
   fi
done

FILE=$(date +"outcome3_backup_%d_%m_%y.sh")
touch /home/robert/$FILE ;;


2)FILE=$(date +"log_file_%d_%m_%y.txt")
  touch /home/robert/log_dir/$FILE

  echo "Users online: " > /home/robert/log_dir/$FILE
  (users) >> /home/robert/log_dir/$FILE


  echo "Running proccesses:" >> /home/robert/log_dir/$FILE
  ps -a >> /home/robert/log_dir/$FILE


  echo "Available disk space:" >> /home/robert/log_dir/$FILE
  df --total -h|head -n 1 >> /home/robert/log_dir/$FILE
  df --total -h|tail -n 1 >> /home/robert/log_dir/$FILE ;;


3) ;;


q) exit ;;

esac
done

答え1

In Sorva, J. (2018) 誤解と初心者プログラマー。 In:Barendsen、E.、Schulte、S.、Sentance、S.(Eds。)コンピュータサイエンス教育:学校での教育と学習の観点。ロンドン, Bloomsbury, pp. 171-188。コンピュータがコンピュータプログラムを解釈する方法について広く知られている誤解がある。

M18:プログラムは自然な会話である程度文章として解釈されます。実用的な目的のために、コンピュータまたはプログラミング環境はプログラマの意図を推論することができます。たとえば、学習することなく「明らかに」欠落している情報を埋めることができます。

IE変数名は最初の例とは異なります。コンピュータはそれらをまったく異なるものと見なしています。


echo "Enter the name of the file:"
read filename 
cp -r /home/$FILE

FILE:とは異なり、filename大文字と小文字が異なります。


注:変数名にはすべて大文字を使用しないでください。shellcheckエラーを見つけるためにスクリプトを渡します。

住宅検査

echo '#!/bin/bash
echo "Enter the name of the file:"
read filename
cp -r /home/$FILE' | shellcheck /dev/stdin

商品を返す

In /dev/stdin line 3:
read filename
^-- SC2162: read without -r will mangle backslashes.
     ^-- SC2034: filename appears unused. Verify use (or export if used externally).


In /dev/stdin line 4:
cp -r /home/$FILE
^-- SC2225: This cp has no destination. Check the arguments.
            ^-- SC2086: Double quote to prevent globbing and word splitting.

関連情報