0%

Missing Semester 2

作业

1.

直接看手册,略。

2.

  • 注意权限。可以存在 $HOME 目录下或者 export A=$(pwd) 设置环境变量。

  • echo 是直接 IO,cat 是读取文件。

  • source *.sh 为什么没用?

    *因为 source 是执行不是编译。

3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash#

# 或者 solution 中用的 /usr/bin/env bash?似乎有区别

rm out.txt err.txt
echo "out.txt and err.txt removed."

for ((cnt=0;;cnt++)); do
bash 3.sh >> out.txt 2>> err.txt
# 不是 source
if [[ $? -ne 0 ]]; then
break
fi
done

echo "Error occured after $cnt runs."
echo "stdout:"
cat out.txt
echo "stderr:"
cat err.txt

bash./ 类似,后者要权限(用 chmod)。这两个的原理是新开一个 shell 运行。

3.sh(题目给的代码)中有 exit 1,用 source 到这里会直接退出 bash,因为 source 的原理是直接在本 shell 运行。还有一种写法是把 source 替换成 .

还有一个 sh,与 bash 的区别是:

sh 遵循 POSIX 规范:“当某行代码出错时,不继续往下解释”。bash 就算出错,也会继续向下执行。

试了一下编译过不了。这其实属于历史遗留问题

4.

1
find . -name "*.css" -exec zip csss.zip {} +
  • -name 不直接操作文件,所以格式是字符串。
  • zip 后第二个参数用 {} 表示 find 的结果。
  • + 结束 -exec

老东西不会写代码了。