Linux之Shell脚本自动化编程一(shell脚本的用处和不同语言的代码的执行方式)

**一:起因****(0)也许由于一时的冲动使得你开始关注并学习新万博maxbextx手机版登陆;亦许由于是道听途说shell的威力很大;亦许由于新万博maxbextx手机版登陆的魅力;亦许由于作为一个coder的偏好;亦许……****(1)先来搞清楚为什么要学shell,学习要有目的性—-简单的说shell就是一个包含若干行Shell或者Linux命令的文件。

但是上面只是为了学习编译链接的过程,真正编译链接只需要:gcc1.c-o1c这一句就都够了,我们可以选择不把它输出的可执行文件放在环境变量的目录里面,用绝对路径执行,也可以放在里面,直接输名字就可以执行了。

运行Shell脚本有两种方法:**1、作为可执行程序**将上面的代码保存为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里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。

可以使用-来表示内范围,如1-5等价于1,2,3,4,5。

,”

输入一些代码,第一行一般是这样:!/bin/bash!/usr/bin/php!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。

**!(https://pic3.zhimg.com/50/v2-4f4b1aad1dd7f8c0f6d7840af7772a65_720w.jpg?source=1940ef5c)!()《Linux命令行与shell脚本编程大全》!(https://picx.zhimg.com/50/v2-685048ec2d2cb5564ebdb7dee8c2e1e4_720w.jpg?source=1940ef5c)!()这本书是入门级的读物,是关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。

Shell教程Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。

KenThompson的sh是第一种UnixShell,WindowsExplorer是一个典型的图形界面Shell。

所以说c语言是上面列出的几种语言里面代码量相同的情况下运行速度最快的。

Linux的Shell种类众多,常见的有:*BourneShell(/usr/bin/sh或/bin/sh)*BourneAgainShell(/bin/bash)*CShell(/usr/bin/csh)*KShell(/usr/bin/ksh)*ShellforRoot(/sbin/sh)*……本教程关注的是Bash,也就是BourneAgainShell,由于易用和免费,Bash在日常工作中被广泛使用。

从工作角度来讲,学习Shell是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。

*双引号里可以有变量*双引号里可以出现转义字符!/bin/bashstr=\thisisastring\your_name=\runoob\str=”Hello,Iknowyouare\\”$your_name\\”!\\n”echo-e$str输出结果:Hello,Iknowyouare”runoob”!字符串拼接your_name=”runoob”使用双引号拼接greeting=”hello,”$your_name”!”greeting_1=”hello,$SB”通过上述两行代码,可以看出作用第一行不加花括号,会将your_nameSB当做一个变量,值为空,输出结果为空。

看完《LinuxShell脚本攻略》之后,你会很轻松地利用少量命令的组合完成诸如文本处理、文件管理、备份等复杂的数据管理工作。

不能使用标点符号。

*不能使用bash里的关键字(可用help命令查看保留关键字。

**Shell运行机制**\u200b当用户下达指令给该操作系统的时候,实际上是把Shell命令或者脚本发给Shell解析器,经Shell解析器解析处理后调用linux内核服务,让内核做出相应的动作。

同时,Shell也是一个门程序设计语言,Shell里面含有变量,函数,逻辑控制语句等等。

Shell变量Shell变量分为3种:1\\.用户变量2\\.系统变量3\\.环境变量**1\\.用户变量**定义用户变量需要注意下面2点:1\\.等号前后不能有空格:num=102\\.使用$+变量名调用变量**常见有3个对用户变量进行操作的前缀:**unset:删除变量readonly:标记只读变量export:指定全局变量例如:!/bin/bash定义普通变量strstr=SHENZHEN定义全局变量nameexportname=cdeveloper定义只读变量numreadonlynum=21打印变量的值echo$strecho$nameecho$num删除str变量unsetstr不会输出SHENZHENecho$str运行结果:SHENZHENcdeveloper212\\.系统变量常用的系统变量有下面这些:1.$0:当前程序的名称2.$n:第n个命令行参数(n从0开始计算)3.$:命令行参数个数(除$0)4.$@:所有命令行参数5.$*:所有命令行参数6.$?:前一个命令的退出状态,可用于获取函数返回值7.$$:当前进程的ID例如:(example.sh)!/bin/bashecho”print$”echo”\\$0=$0″echo”\\$1=$1″echo”\\$2=$2″echo”\\$=$”echo”\\$@=$@”echo”\\$*=$*”echo”\\$?=$?”echo”\\$$=$$”执行`./`example.sh`12345`的结果:print$$0=./example.sh//程序名$1=1//第一个参数$2=2//第二个参数$=5//命令行参数个数,这里一共5个$@=12345//所有命令行参数$*=12345//所有命令行参数$?=0//之前没有执行其他命令或者函数$$=9450//进程ID3\\.环境变量**Shell环境变量是所有shell程序都会接受的一组参数,**常用的有下面这几个:1\\.HOME:用户主目录2\\.PATH:系统环境变量PATH3\\.TERM:当前终端4\\.UID:当前用户ID5\\.PWD:当前工作目录,绝对路径例如:!/bin/bashecho”printENV”echo”\\$HOME=$HOME”echo”\\$PATH=$PATH”echo”\\$TERM=$TERM”echo”\\$PWD=$PWD”echo”\\$UID=$UID”运行结果:printEVN当前主目录$HOME=/rootPATH环境变量$PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games当前终端$TERM=xterm当前目录$PWD=/home/linux_shell用户ID$UID=1000Shell运算1.**算术比较运算**!(https://img-blog.csdnimg.cn/20191207161731488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODYxMjU5,size_16,color_FFFFFF,t_70)2.算术计算下面是4种比较常见的运算方法,功能都是将m+1:1\\.m=$m+12\\.m=`expr$m+1`一定要在两边加**`**符号3\\.letm=m+14\\.m=$((m+1))例如:!/bin/bashm=1m=$m+1echo$mm=`expr$m+1`echo$m注意:+号左右不要加空格letm=m+1echo$mm=$((m+1))echo$m运行结果:2345Shell语句Shell语句跟高级语言有些类似,也包括分支,跳转,循环等。

**需要大规模的文件操作或**需要多维数组的支持**需要数据结构的支持,比如链表或数等数据结构****需要产生或操作图形化界面GUI**需要直接操作系统硬件**需要I/O或socket接口**需要使用库或者遗留下来的老代码的接口私人的,闭源的应用(shell脚本把代码就放在文本文件中,全世界都能看到)**如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧–或许是Perl,Python,Ruby,或者是更高层次的编译语言比如C/C++,Java****二:知识点介绍****(1)从脚本编写和执行开始——编写用vim即可,保存为filename.sh文件即可;执行前需要更改为可执行文件或者shfilename.sh来执行:****1)通常shell脚本以.sh为后缀**。