1、编写shell命令集合,用case语句实现以下功能:1)显示当前目录 2)在当前目录下创建一个新的子目录 3)打印当前的日历和时间 4)统计/etc/services 文件的单词数 5)切换到上一级目录下,分别用三种方法运行该脚本程序,比较结果有何不同
时间: 2024-09-30 18:02:02 浏览: 25
你可以使用bash shell编写一个简单的脚本,通过`case`语句来实现各个功能。以下是每个功能对应的bash命令:
```bash
#!/bin/bash
# 显示当前目录
case $1 in
"current_dir")
echo "当前目录:$(pwd)"
;;
esac
# 在当前目录下创建新子目录
case $1 in
"create_subdir")
mkdir new_directory
echo "新子目录 'new_directory' 创建成功。"
;;
esac
# 打印当前日历和时间
case $1 in
"calendar_time")
date
;;
esac
# 统计/etc/services文件的单词数
case $1 in
"word_count")
wc -w /etc/services
;;
esac
# 切换到上一级目录并运行脚本
case $1 in
"up_one_level")
pushd ..
./$0 # 使用相对路径执行自身
popd
;;
"absolute_path")
cd ..
bash ./script.sh # 使用绝对路径执行
;;
"source")
source script.sh # 通过 sourcing 直接执行内容
;;
esac
# 结束 case 语句
exit 0
```
在终端中运行这个脚本时,可以输入相应的选项,如 `./script.sh current_dir` 等。这三种方法的区别在于:
1. `.` (source):直接在当前 shell 环境中执行命令行内容,不会创建新的进程。
2. `bash ./script.sh`:通过绝对路径以新的进程执行。
3. `pushd .. && ./$0 && popd`:先切换到上一级目录,然后在这个目录中执行脚本,之后返回原目录。
注意,你需要将上述脚本保存为名为`script.sh`的文件,并赋予执行权限(`chmod +x script.sh`)才能正常运行。如果你已经拥有这些命令,可以直接在终端中测试它们的效果。
阅读全文