有关 Bash 脚本练习的帮助

有关 Bash 脚本练习的帮助

问候亲爱的社区,我希望您能就这个基于 bash 的小型练习提供帮助。我已经完成了练习,但我不确定它是否完全正确。请提出任何改进或可能的错误的建议。

锻炼:

  1. 创建一个名为 的目录Exam并进入该目录。
  2. Exam目录中创建一个名为sc1.
  3. 打开该sc1文件并编写一个 bash 脚本,该脚本将 - “使用 while 循环,在目录中创建四个文件(ex1、ex2、ex3、ex4)/home/student/Desktop/
  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 文件并编写一个 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
  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 循环可以采用所有三个表达式:

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)

相关内容