UNIX菜菜鸟:一个非常简单的shell script
1. Check if the file exists
2. Check if the input argument is a Directory, instead of a file.
3. Check if right number of argument is entered.
Here are a few sample runs of the shell script chex2.
这是这个scripts运行时的几个输入例子。
$ ls -l
-rwxrwxr-x 1 ngyat ngyat 293 Oct 3 22:22 chex2*
-rw-rw-r-- 1 ngyat ngyat 8 Oct 3 22:36 test123
drwxrwxr-x 2 ngyat ngyat 4096 Oct 3 22:20 try/
$ chex2 test123
test123 is now executable:
-rwxrw-r-- 1 ngyat ngyat 8 Oct 3 22:36 test123
$ chex2 try
try is a Directory.
$ chex2 file_no_exits
file_no_exits does not exist.
$ chex2 test123 extra_arg
usage: chex2 <infile>
$ chex2 test123 extra_arg extra_arg2
usage: chex2 <infile>
$ chex2
usage: chex2 <infile>
以下是老师的Hints,高手不看也罢(我是傻的看了都没用)。
Hints:
1. Argument Variables:
$n [where n = 1, 2, ... n] The argument value follows the command.
e.g. if we type: my_command a1 a2
then, $0 = my_command ,$1 = a1 and $2 = a2
$#argv report the number of words in the input list
e.g. if we type: my_command a1 a2
we will have $#argv equals 2
2. To test attribute of a file, you may want to use the following table:
Argument Test if it is a ...
-d file file is a directory
-f file file is an ordinary file
-r file file is reable
-w file file is writable
-x file file is executable
Note: you only need to use TWO of the above arguments, NOT all.
The following are two examples of using the above attributes:
a) to check if a file is readable,
if (-r $filename) then
...
endif
b) to check if a file is NOT writable,
if (! -w $filename) then
...
endif
3. Use exit command to get out of the if loop and the script
4. Here is one sample portion of logic of your shell script. [Hint: There should be three of this if part].
if no input file name then
print error message
exit ## this command will terminate the script and lets you get back to the shell prompt
endif
相关推荐
akirya-开源
这是 akirya 的个人代码集。。。。
Okteto:让Kubernetes开发回归IDE本地体验的CLI工具
Kubernetes开发长期面临环境不一致、调试低效、反馈延迟等核心痛点。其本质是传统CI/CD流水线与本地开发工作流之间的语义鸿沟——开发者需要的是‘改保存即生效’的实时性,而非反复构建镜像与滚动部署。Okteto通过轻量级CLI驱动的双向文件同步、SPDY隧道封装和原地容器增强机制,在不模拟集群、不侵入K8s核心组件的前提下,将VS Code等本地IDE与远端Pod深度集成。它复用kubectl认证体系,兼容任意K8s发行版(包括kubekey搭建的Ubuntu 22.04高可用集群),并天然支持Spr
Kubernetes 1.34.2 二进制部署:cgroupv2、CRI-O 与 systemd 深度实践
Kubernetes 是一个由多个松耦合组件构成的分布式控制系统,其核心原理依赖于控制平面组件间基于 TLS 的安全通信、etcd 的强一致性数据存储,以及容器运行时与 kubelet 的标准化接口(CRI)。随着 1.34.2 LTS 版本发布,K8s 全面转向 cgroup v2 原生支持和 CRI-O 默认运行时,强制要求 systemd cgroup driver 并彻底移除 dockershim。这一演进显著提升了生产环境的安全性与可维护性,但也大幅提高了部署门槛——自动化工具如 kubeadm
硕士复现燃料电池供氢系统建模及控制策略Simulink仿真(附带说明PPT+参考文献+复现模型+实物源码)
内容概要:本资源聚焦于燃料电池供氢系统的建模与控制策略研究,通过Simulink仿真平台实现系统动态行为的精确模拟与控制算法的验证。内容涵盖供氢系统的关键部件建模,如氢气供应管路、压力调节阀、储氢罐及燃料电池堆等,并针对系统响应滞后、压力波动等问题,设计并实现了先进的控制策略,例如基于反馈与前馈的复合控制、PID控制或模型预测控制(MPC),以确保氢气供给的稳定性与效率。配套提供的说明PPT详细阐述了建模思路与控制逻辑,参考文献为研究提供了理论支撑,而完整的复现模型与实物源码则极大地方便了学习者进行仿真复现与二次开发。; 适合人群:具备一定自动化、电气工程或能源动力系统背景,正在进行相关课题研究的研究生,以及从事氢能系统开发的工程技术人员。; 使用场景及目标:① 学习并掌握燃料电池供氢系统的工作原理与关键组件的数学建模方法;② 利用Simulink搭建复杂能源系统的仿真模型,并设计、调试与验证先进控制策略;③ 基于提供的完整资源包(PPT、模型、源码)进行科研复现,作为学位论文或学术研究的技术基础。; 阅读建议:学习者应结合说明PPT的理论讲解,逐步操作复现模型,重点关注控制模块的设计逻辑与参数整定过程。建议在理解现有模型的基础上,尝试修改工况参数或优化控制算法,以深化对系统动态特性的认识,从而将本资源作为开展自主创新研究的有效跳板。
风光火储多源协同参与电网一次调频与二次 AGC 调频控制策略研究(Simulink仿真实现)
内容概要:本文研究了风光火储多源协同参与电网一次调频与二次AGC调频的控制策略,并通过Simulink进行仿真实现。深入分析了风能、光伏、火电及储能系统在电网频率调节中的出力特性与动态响应机制,提出了一种综合协调控制策略,实现调频责任的合理分配与控制指令的有效分解。研究涵盖了多能源系统建模、频率偏差检测、调频功率分配逻辑、控制器参数设计及闭环仿真验证等关键环节,有效提升了高比例新能源接入背景下电力系统的频率稳定性与抗扰动能力。; 适合人群:具备电力系统、自动化或新能源相关背景,从事电网控制、能源调度、仿真建模等工作的科研人员与工程技术人员,尤其适合研究生及从事新能源并网与电力系统稳定研究的专业人员。; 使用场景及目标:①应用于高比例新能源接入电网的频率稳定控制研究;②为风光火储多能互补系统的协同控制策略设计提供仿真验证平台;③支持电力系统仿真教学与科研中的动态性能分析与控制算法开发。; 阅读建议:建议结合Simulink模型文件同步运行仿真,深入理解各模块控制逻辑;重点关注多源调频的协调机制与参数整定方法,可进一步扩展至含储能优化配置或考虑通信延迟的场景研究。


系统维护与使用区
