親愛なるコミュニティの皆さん、この小さなbashベースの練習をお手伝いしたいと思います。練習してみましたが、完全に合うかどうかはよくわかりません。改善点や可能なバグを提案してください。
運動:
- というディレクトリを作成し、
Exam
そのディレクトリを入力します。 Exam
というファイルを作成しますsc1
。- ファイルを開き、
sc1
「whileループを使用してディレクトリに4つのファイル(ex1、ex2、ex3、ex4)を作成します/home/student/Desktop/
」というbashスクリプトを作成します。 - このファイルを
/home/student/Exam/
ディレクトリにコピーします。 - ファイルを実行する権限があることを確認/確認してください
ex1
。 - ファイルの名前を変更して
ex2
名前を付けますlog
。
答え:
mkdir /home/student/Exam/
+cd /home/student/Exam
touch sc1
vim sc1
次のように入力してから入力する必要があります。#!/bin/bash while dir /home/student/Desktop/; do touch "$dir/ex1" touch "$dir/ex2" touch "$dir/ex3" touch "$dir/ex4" done
cp -a /home/student/Desktop/. /home/student/Exam/
ls -l ex1
(修正済み)mv ex2 log
(修正済み)
答え1
Examというディレクトリを作成し、そのディレクトリに入ります。
mkdir Exam && cd Exam
Exam ディレクトリに sc1 というファイルを作成します。
touch sc1
sc1ファイルを開き、「whileループを使用して/home/student/Desktop/ディレクトリに4つのファイル(ex1、ex2、ex3、ex4)を作成します」というbashスクリプトを作成します。
最初の例を見るここ という変数を作成し、
i
1を割り当ててからループを開始し、i
5以上になるとこれを行います(以下は4までを意味します)。または-le 4
4以下を使用できます。次の前の最後のi値反復に1を追加します。
i="1"
while [ $i -lt 5 ]
do
touch "ex$i"
i=$[$i+1]
done
このファイルを/home/student/Exam/ディレクトリにコピーします。
cp ex* /home/student/Exam/
ex1ファイルを実行する権限があることを確認/確認してください。
チューニング確認パス
ls -l /home/student/Exam/ex1
実行して修理
chmod 700 /home/student/Exam/ex1
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)