
看了很多Shell学习计划,但最终还没有完成. 让我谈谈我们在Marco Linux学习社区中一个人的经历.
一个: 原因
(0)也许是由于您开始学习和学习Shell编程的冲动;也许是因为“传闻”外壳的力量;也许是因为shell编程的魅力;也许是因为偏爱编码员;也许...
(1)首先让我们弄清楚为什么我们应该学习shell,并且学习应该是有目的的. ----简单地说,shell是一个包含几行Shell或Linux命令的文件. 对于一次编写且多次使用的大量命令,可以使用单独的文件将其保存以备将来使用.
该外壳简单,灵活且高效,特别适合处理系统管理中的小问题
shell可以实现自动管理,使系统管理员的工作变得轻松,简单,高效
shell可以以文件的形式存储一些常用的命令或操作,每次都可以调用它,而不必重复键入命令
shell脚本具有良好的可移植性,可以灵活地移植到unix / linux系统中,并且无需任何设置即可正常运行
shell脚本无需编译即可轻松读取和修改源代码. 精通Shell可以帮助您解决一些故障问题,例如由脚本引起的故障问题
掌握外壳对于中级或以上系统工程师来说是必须的. 掌握外壳程序是您系统管理前进的唯一途径
精通外壳是您面试更高级职位的垫脚石
(2)您何时不使用Shell脚本?

资源密集型任务,尤其是在需要考虑效率(例如排序,哈希等)的情况下
需要处理大型任务的数学运算,特别是浮点运算,精度运算或复杂的算术运算(这种情况通常使用C ++或FORTRAN处理)
跨平台的可移植性要求(通常使用C或Java),在必须使用结构化编程(要求对变量,函数原型等进行类型检查)的情况下
对于影响系统全局性的关键任务应用程序. 对安全性有较高要求的任务,例如您需要一个功能强大的系统来防止入侵,破解,恶意破坏等. 该项目由一系列相关部分组成.
需要大型文件操作,或者需要支持多维数组. 支持数据结构,例如链表或数字数据结构
需要生成或操作GUI. GUI需要直接的操作系统硬件. 需要I / O或套接字接口
需要使用库或旧式旧代码的接口. 私有的,封闭源代码的应用程序(shell脚本将代码放在一个文本文件中,在世界范围内都可以看到)
如果您的应用程序符合以上任何条件,请考虑使用更强大的语言,例如Perl,Python,Ruby或更高级别的编译语言,例如C / C ++,Java
二: 知识点介绍
(1)开始编写和执行脚本-您可以使用vim进行编写并将其另存为filename.sh文件;在执行之前,您需要更改为可执行文件或sh filename.sh才能执行:
1)Shell脚本通常以.sh结尾. 编写外壳程序时,第一行必须指出系统需要使用哪个外壳程序来解释用户的外壳程序,例如: #! / bin / sh,#! / Bin / bash,#! / bin / csh,#! / bin / tcsh,#! / bin / ksh等. 以下run.sh指定使用bash执行. #! bin / bash ls -l通常,shell脚本将使用#! / bin / sh作为默认的shell程序. 有两种执行Shell的方法: 第一种是向Shell脚本添加可执行权限并执行它,第二种是通过sh命令执行Shell脚本,例如在当前目录中执行run.sh脚本. ,命令如下: //将可执行权限直接添加到Shell脚本并执行chmod 755 run.sh ./run.sh
2)//通过sh命令执行shell脚本

sh run.sh注意: 为什么“ sh shell.sh”也可以运行?这是因为/ bin / sh实际上是/ bin / bash(链接文件). 使用sh shell.sh还会告诉系统我要使用bash函数直接在shell.sh文件中运行相关命令. 因此,此时,只要您具有r权限,就可以运行shell.sh!而且我们还可以使用sh参数(例如-n和-x)来检查和跟踪shell.sh的语法是否正确. Sh -x filename.sh这将执行脚本并显示脚本中所有变量的值. 您也可以使用参数-n,它不执行脚本,仅返回所有语法错误. (2)让我们从经典的“ hello world”开始,看看最简单的shell脚本.
sudo vim hello.sh:
#! / bin / sh#在控制台窗口中打印hello world a =“ hello world” echo“ Hi,$ {a} s”
chmod 755 hello.sh更改为可执行文件rwx(4,2,1)
sh hello.sh或./hello.sh
(3)外壳中的特殊字符
与其他编程语言一样,shell中也包含特殊字符. 常见的符号是美元符号($),反斜杠(\)和引号.
1)美元符号
美元符号表示变量替换,即将变量替换为其后指定的变量值. 反斜杠“ \”是转义字符. 转义字符告诉外壳程序不要对它后面的字符进行特殊处理,而应作为普通字符.
2)双引号(“)
用双引号引起来的字符($,反引号(`)和反斜杠(\)除外)仍保留其特殊功能,其余字符被视为普通字符. 3)单引号(')用单引号引起来的字符显示为普通字符.
4)返回键(`)Tab键上方的原始字符 p>

由反引号引起来的字符串被Shell解释为命令行. 在执行时,shell将首先执行命令,并用其标准输出替换整个引用的部分.
5)示例
示例1的代码和输出如下: #echo“我的当前目录是pwd,日志名是$ LOGNAME” [[双引号中的反引号和美元符号保持原始功能]我的当前目录是/ root和logname的代码和输出是root示例2,如下所示: #echo“我的当前目录是`pwd`,logname是\ $ LOGNAME” [[双引号中的转义符保留原始功能]我的当前目录是/ root和登录名是$ LOGNAME示例3的代码和输出如下: #echo'我的当前目录是`pwd`,登录名是$ LOGNAME'[单引号中的内容未更改]我的当前目录是`pwd`和日志名称为$ LOGNAME
6)变量
shell变量与JS和python非常相似,无需声明;但是要注意的是,变量和等号(即等号前后没有空格),例如num = 10;但是如果[$ {num} eq 10];然后...... fi里面一定要有一些空格
(4)Shell脚本说明
Shell脚本与其他编程语言一样,也具有注释. comment方法是在注释行前面添加#. 例如,以下脚本: #! / Bin / sh#文件名: comment.sh#说明: 此脚本说明如何进行评论回显“此脚本说明如何进行评论”
创建脚本时,脚本的第一行通常称为shbang(#!)行. 脚本启动时,UNIX内核会检查文件的第一行以确定要执行的程序的类型.
shbang符号(#!)之后的路径用于解释此脚本的shell位置. 要正确使用此功能,请#!必须是文件中的前两个字符. 如果文件开头有空格或空白行,则会忽略此功能shell编程入门,并将该行解释为普通注释行.
(5)看一下sh脚本执行的奥秘
打开一个文本编辑器shell编程入门,创建一个新文件,扩展名是sh(sh代表shell),该扩展名不影响脚本的执行,只看名称和理解,如果使用php编写一个shell脚本,扩展名为php.
输入一些代码:

#! / bin / bash
回声“ Hello World!”
“#!”是一个常规标记,它告诉系统脚本需要执行哪个解释器,即使用哪个shell. echo命令(最好使用$ printf“”以获得更好的可移植性)用于将文本输出到窗口.
将上述代码另存为test.sh和cd到相应目录:
chmod + x ./test.sh#启用脚本以执行权限
./ test.sh#执行脚本
请注意,它必须写为./test.sh,而不是test.sh. 其他二进制程序也是如此. 直接编写test.sh. Linux系统将转到PATH来查找它是否称为test.
sh,只有/ bin,/ sbin,/ usr / bin,/ usr / sbin等位于路径中,您的当前目录通常不在PATH中,因此编写test.sh将找不到命令,要使用./test.sh告诉系统,只需查看当前目录即可.
以这种方式运行bash脚本,必须正确编写第一行,以便系统可以找到正确的解释器.
这里的“系统”实际上是shell应用程序(想象为Windows资源管理器),但是我故意将其编写为系统,这很容易理解. 由于此系统引用外壳程序,因此使用/ bin / sh作为解释器的脚本可以保存第一行吗?是的.
三: 体验体验
(1)简而言之,shell是一个包含几行Shell或Linux命令的文件. 对于一次编写且多次使用的大量命令,可以使用单独的文件将其保存以备将来使用.
例如: 如果您使用c编写项目,则会有许多.h文件,.c文件等. 每次更改时,都需要重新g ++ filenames.c filenames.h -o filenames,太麻烦了,那就需要写一个小的shell文件,就可以解决问题了.
(2)请记住,我上次写了python的基础学习,应该在一个月前,这一次重新学习一种新语言(脚本语言),间隔很短;语言,然后学习其他语言非常容易使用-入门,如果您想提高或深化某种语言,则只能说``路很长,修养很远!'' >
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-188546-1.html
天王老子保护地也能炸个片甲不留
范围不定
你们以一等人居之很好
很遗憾