Shell脚本学习指南——Chapter 2 初识

本文介绍了如何使用简单的Shell命令创建脚本来实现自动化任务,包括如何使用管道和重定向,以及如何构建基本的Shell脚本。此外还介绍了Shell脚本中的变量、内建命令等关键概念。

  • 一、简单的脚本

1、$ who ——查看现在系统上有多少人登录

2、$who | wc -l ——计算用户个数

【‘|’管道符号可以在两个程序之间建立管道(pipeline):who的输出,成了wc的输入,wc所列出的结果就是已登录用户的个数。】

3、将2中的管道转变成一个独立的命令:把这条命令输入一个一般的文件中,然后为该文件设置执行权限。

$ cat > nusers //建立文件,使用cat复制终端的输入
 who | wc -l	 //程序的内容
 ^D		 //ctrl+D退出语句
$ chmod  +x nusers	//让文件拥有执行的权限
$ ./nusers		//输出我们要的结果

【小型shell脚本的典型开发周期:】

1)直接在命令行(command line)上测试

2)一旦找到能够完成工作的适当语法,再将它们放进一个独立的脚本里面,并为改脚本设置执行权限就可以直接使用该脚本

PS:在此过程中可能会出现按下BackSpace就变为^H的情况,参考http://blog.youkuaiyun.com/gugu1313/article/details/44040675 或者 http://lbs1991.blog.51cto.com/9134853/1546801/


二、位于第一行的 #!
1、意义:告知UNIX内核应该以哪个Shell来执行所指定的Shell脚本——有助于执行机制的通用化,让用户得以直接引用任何的程序语言解释器,而非只是一个命令Shell。
      当一个文件中开头的两个字符是 #! 时,内核会扫描该行其余的部分,看是否存在可用来执行程序的解释器的完整路径。

三、Shell的基本元素
1、“-c” 选项的开头是一个破折号或者减号,后面接着一个字母,不需要参数的选项可以合并
     “--backup” 长选项的开头是一个破折号还是两个,视程序而定
       以两个破折号(--)来表示选项结尾的用法
2、分号(;)可以用来分隔同一行里的多条命令。Shell会依次执行这些命令。
     如果你使用的是“&”符号而不是分号,则Shell将在后台执行其前面的命令,也就是说Shell不用等到该命令完成,就可以继续执行下一个命令
3、Shell识别三种基本命令:内建命令、Shell函数以及外部命令
1)内建命令:就是Shell本身执行的命令
  • cd ---- 改变目录
  • read ---- 将来自用户(或文件)的输入数据传给Shell变量
  • test ---- 为了执行效率
  • echo/printf ----- I/O命令
2)Shell函数:用Shell语言写成,它们可以像命令那样引用
3)外部命令:就是Shell的副本(新的进程)所执行的命令,步骤如下
  • 建立一个新的进程,此进程是Shell的一个副本
  • 在新的进程里,在PATH变量内所列出的目录中,寻找特定的命令。当命令名称含有斜杠(/)符号时,将略过路径查找步骤
  • 在新的进程里,以所找到的新程序取代执行中的Shell程序并执行
  • 程序完成后,最初的Shell会接着从终端读取下一条命令,或执行脚本里的下一条命令


4、变量
Shell中变量值可以(通常是)空值,也是就是不含任何字符。
1)变量赋值的方式:变量名称=值(没有空格,值中有空格则加上引号) $变量名称

5、echo输出:产生输出,可用来提示用户,或是用来产生数据供进一步处理
6、printf输出:不会自动提供一个换行符号,必须显式地将换行符号指定成\n
7、基本的I/O重定向:标准输入、标准输出、标准错误输出【通过与终端交互,或是在Shell脚本里设置,重新安排从哪里输入或输出到哪里】
1)过滤器(filter):许多UNIX程序会读取标准输入、写入标准输出,并将错误信息传递到标准错误输出。

8、重定向与管道
1) < 改变标准输入
program < file 可将program 的标准输入修改为file
tr -d '\r' < dos-file.txt
2) > 改变标准输出
program > file 可将program的标准输出修改为file
tr -d '\r' < dos_file.txt >UNIX-file.txt
这条命令会先以tr将dos-file.txt里的ASCII carriage-return(回车)删除,再将转换完成的数据输出到UNIX-file.txt。dos-file.txt里面的原始数据不会有变化。
3)>>附加到文件
program >> file 可将program的标准输出附加到file的结尾处。
如果目的文件不存在,>>重定向符就会新建一个。然而如果目的文件存在,它不会直接覆盖掉文件,而是将程序所产生的数据附加到文件结尾处。
4) | 建立管道
program1 | program2可以将program1的标准输出修改为program2的标准输入
管道可以把两个以上执行中的程序衔接在一起。第一个程序的标准输出可以变成第二个程序的标准输入
tr -d '\r' < dos-file.txt | sort > UNIX-file.txt
这条管道会先删除输入文件内的回车字符,在完成数据的排序之后,将结果输出到目的文件。






多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法旨在应对电力系统中源荷不确定性带来的挑战,通过构建分布鲁棒优化模型,有效处理多源输入下的动态最优潮流问题,提升系统运行的安全性和经济性。文中详细阐述了模型的数学 formulation、求解算法及仿真验证过程,并提供了完整的Matlab代码实现,便于读者复现与应用。该研究属于电力系统优化调度领域的高水平技术复现,具有较强的工程实用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事电力系统优化调度的工程技术人员,尤其适合致力于智能电网、鲁棒优化、能源调度等领域研究的专业人士。; 使用场景及目标:①用于电力系统多源环境下动态最优潮流的建模与求解;②支撑含可再生能源接入的电网调度决策;③作为鲁棒优化方法在实际电力系统中应用的教学与科研案例;④为IEEE118节点系统的仿真研究提供可复现的技术支持。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注不确定变量的分布鲁棒建模、目标函数构造及求解器调用方式。读者应具备一定的凸优化和电力系统分析基础,推荐配合YALMIP工具包与主流求解器(如CPLEX、Gurobi)进行调试与扩展实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值