查阅shell编程相关资料,编写shell脚本并执行。请提交脚本代码以及代码解释,并附实验过程截图。 1)实现从键盘读取两个数,并比较两个数大小,并打印结果。 提示:echo,read,if 2)实现读取文件的每一行 提示:cat,while,read 3)把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h” 提示:find,for循环 4)编写make文件实现编译c或c++代码。 提示:make,gcc
时间: 2024-03-08 14:50:46 浏览: 65
很抱歉,作为一个AI语言模型,我无法提供附带实验过程截图的答案。不过我可以为您提供Shell脚本代码以及代码解释,供您参考。
1)实现从键盘读取两个数,并比较两个数大小,并打印结果。
```
#!/bin/bash
echo "请输入第一个数:"
read num1
echo "请输入第二个数:"
read num2
if [ $num1 -gt $num2 ]; then
echo "$num1 大于 $num2"
elif [ $num1 -lt $num2 ]; then
echo "$num1 小于 $num2"
else
echo "$num1 等于 $num2"
fi
```
代码解释:
- `echo` 命令用于输出提示信息。
- `read` 命令用于从键盘读取输入,将输入存储到变量 `num1` 和 `num2` 中。
- `if` 命令用于比较两个数的大小,根据比较结果输出不同的信息。
- `-gt` 操作符用于判断大于,`-lt` 操作符用于判断小于。
2)实现读取文件的每一行
```
#!/bin/bash
echo "请输入文件名:"
read file
while read line; do
echo "$line"
done < $file
```
代码解释:
- `echo` 命令用于输出提示信息。
- `read` 命令用于从键盘读取文件名。
- `while` 命令用于循环读取文件的每一行,`read` 命令用于读取文件的每一行并存储到变量 `line` 中。
- `<` 操作符用于将文件内容输入到循环中。
3)把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h”
```
#!/bin/bash
for file in $(find . -name "*.txt"); do
mv "$file" "${file%.txt}.h"
done
```
代码解释:
- `for` 命令用于遍历当前目录(包含子目录)下所有后缀为 `.txt` 的文件。
- `find` 命令用于查找文件,`-name` 选项用于指定文件名模式。
- `mv` 命令用于重命名文件,`${file%.txt}.h` 表示将 `.txt` 后缀替换为 `.h` 后的新文件名。
4)编写make文件实现编译c或c++代码。
```
CC=gcc
CFLAGS=-Wall -g
SRC=$(wildcard *.c)
OBJ=$(SRC:.c=.o)
TARGET=program
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) $^ -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJ) $(TARGET)
```
代码解释:
- `CC` 变量用于指定编译器,`CFLAGS` 变量用于指定编译选项。
- `SRC` 变量用于指定源文件,`OBJ` 变量用于指定目标文件。
- `TARGET` 变量用于指定目标程序名。
- `$(TARGET)` 表示目标程序依赖于所有的目标文件,`$(CC)` 命令用于链接目标文件生成目标程序。
- `%.o: %.c` 表示每个目标文件依赖于对应的源文件,`$(CC)` 命令用于编译生成目标文件。
- `clean` 用于清理目标文件和目标程序。
阅读全文