Bash スクリプティング練習ヘルプ

Bash スクリプティング練習ヘルプ

親愛なるコミュニティの皆さん、この小さなbashベースの練習をお手伝いしたいと思います。練習してみましたが、完全に合うかどうかはよくわかりません。改善点や可能なバグを提案してください。

運動:

  1. というディレクトリを作成し、Examそのディレクトリを入力します。
  2. Examというファイルを作成しますsc1
  3. ファイルを開き、sc1「whileループを使用してディレクトリに4つのファイル(ex1、ex2、ex3、ex4)を作成します/home/student/Desktop/」というbashスクリプトを作成します。
  4. このファイルを/home/student/Exam/ディレクトリにコピーします。
  5. ファイルを実行する権限があることを確認/確認してくださいex1
  6. ファイルの名前を変更してex2名前を付けますlog

答え:

  1. mkdir /home/student/Exam/+cd /home/student/Exam
  2. touch sc1
  3. vim sc1次のように入力してから入力する必要があります。

    #!/bin/bash 
    while dir /home/student/Desktop/; do  
       touch "$dir/ex1"
       touch "$dir/ex2"
       touch "$dir/ex3"
       touch "$dir/ex4"
    done
    
  4. cp -a /home/student/Desktop/. /home/student/Exam/

  5. ls -l ex1(修正済み)
  6. mv ex2 log(修正済み)

答え1

  1. Examというディレクトリを作成し、そのディレクトリに入ります。

    mkdir Exam && cd Exam

  2. Exam ディレクトリに sc1 というファイルを作成します。

    touch sc1

  3. sc1ファイルを開き、「whileループを使用して/home/student/Desktop/ディレクトリに4つのファイル(ex1、ex2、ex3、ex4)を作成します」というbashスクリプトを作成します。

    最初の例を見るここ という変数を作成し、i1を割り当ててからループを開始し、i5以上になるとこれを行います(以下は4までを意味します)。または-le 44以下を使用できます。次の前の最後のi値反復に1を追加します。

i="1"

while [ $i -lt 5 ]
do
  touch "ex$i"
  i=$[$i+1] 
done
  1. このファイルを/home/student/Exam/ディレクトリにコピーします。

    cp ex* /home/student/Exam/

  2. ex1ファイルを実行する権限があることを確認/確認してください。

    チューニング確認パスls -l /home/student/Exam/ex1

    実行して修理 chmod 700 /home/student/Exam/ex1

  3. ex2 ファイルの名前を変更し、名前を log に指定します。

    mv /home/student/Exam/ex2 /home/student/Exam/log

答え2

i=1
while (( i <= 4 ))
do
   echo "ex$(( i++ ))"
done

これが私ができる「最高の」whileループです。 forループは3つの式をすべて使用できます。

for (( i = 1; i <= 4; i++ ))
do
   echo "ex$i"
done

あるいは、このように((二重括弧))を完全に避けてください。

for i in 1 2 3 4
do
   echo "ex$i"
done

ここに中間の解決策があります。 「1から4まで」と言うよりも「1,2,3,4」と言う方が簡単です。

しかし、これはtouch "ex1"; touch "ex2"; touch "ex3" ...一般的に良い考えではありません。特にループを使用するように指示された場合は、さらにそうです。怠惰も重要ですが、プログラマーは(複数回)コピーして貼り付けることを誇りに思う必要があります。

for i in 1 2 3 4
do
   touch "/home/student/Desktop/ex$i"
done

これは完全な循環でなければなりません。より多くの数字または他の数字(または文字/文字列)が必要な場合は、簡単に変更できます。

ここでwhileループを残したので、できるだけ短い「ループ」である中括弧拡張を追加します。

touch /home/student/Desktop/ex{1,2,3,4}

または

dir=/home/student/Desktop
touch $dir/ex{1..4}

Tell me master can you answer a question:
Is it the fingers or the brain that you're teaching a lesson? 
                                       (White Stripes)

関連情報