问候亲爱的社区,我希望您能就这个基于 bash 的小型练习提供帮助。我已经完成了练习,但我不确定它是否完全正确。请提出任何改进或可能的错误的建议。
锻炼:
- 创建一个名为 的目录
Exam
并进入该目录。 - 在
Exam
目录中创建一个名为sc1
. - 打开该
sc1
文件并编写一个 bash 脚本,该脚本将 - “使用 while 循环,在目录中创建四个文件(ex1、ex2、ex3、ex4)/home/student/Desktop/
。 - 将这些文件复制到
/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 文件并编写一个 bash 脚本,该脚本将 - “使用 while 循环,在 /home/student/Desktop/ 目录中创建四个文件(ex1、ex2、ex3、ex4)。
请参阅第一个示例这里 创建一个名为的变量
i
并将其分配为 1,然后开始循环,并在i
不低于 5 时执行此操作(低于意味着直到 4) - 或者您可以使用-le 4
低于或等于 4。在 next 之前将 1 添加到最后一个 i 值迭代。
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 循环可以采用所有三个表达式:
for (( i = 1; i <= 4; i++ ))
do
echo "ex$i"
done
或者像这样,完全避免 (( 双括号 )) 。
for i in 1 2 3 4
do
echo "ex$i"
done
这是一个介于两者之间的解决方案:说“1,2,3,4”比说“从1到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)