Shell脚本
Posted 一无所有就是编程的理由
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本相关的知识,希望对你有一定的参考价值。
Shell脚本(学习Linux比较重要的一节)
一、创建Shell脚本
1、Shell 脚本:如果你有一系列经常使用的Linux命令,你可以把它们存储在一个文件中。Shell可以读取这个文件并执行其中的命令。这样的文件被称为脚本文件
2、执行Shell脚本:要创建一个shell脚本你要使用任何编辑器比如:vi在文本文件中编写它,为了使用bash shell来执行脚本magic,其命令是:bash magic 或./magic
3、echo命令用于在屏幕上显示消息:echo“This is an example of the echo command”
这是echo命令的一个例子。
4、#符号:用于shell脚本中可以包含注释入口
echo“Hello”
#This is a comment line. This would not produce any output
Echo “World”
这个例子中,第二行是一个注释
5、创建变量:可以在任何时间通过简单的赋值来创建。
6、语法: <variablename> = <value>
Linux中的所有变量都被当作字符串。
7、引用变量:$符号用于引用一个变量的内容
variable1= ${variable2}
8、读入值给变量:在执行shell脚本时,shell还允许用户从键盘中输入一个值给变量。可以使用read命令来做
read fname
9、局部变量:当引用shell时,只有创建它的shell能够知道变量的存在
10、全局变量:称为子shellshell中创建的变量在局部创建它shell,除非是用export命令特别指出是全局的
11、环境变量:通过改变这些变量的值,用户能够定制此环境。
HOME变量:Linux系统中每个用户都一个相关的称作HOME的目录
当一个用户登陆后,进入相应的HOME的目录 echo$HOME
PATH变量:包含一系列用冒号定界的目录的路径名字便于可执行程序的搜索
PS1变量:PS1(Prompt String1)变量包含了shell提示符,$符号
$PS1= “HELLO>” <Enter>
HELLO> New Prompt
PS2变量:是为第二个提示符设置值的环境变量
LOGNAME变量:包含用户注册名字$echo “${LOGNAME}”
SHLVL变量:该变量包含你当前工作的shell level
SHELL变量:环境变量存储了用户的缺省shell
env变量:用来查看所有的已移出的环境变量表和它们各自的值
二、命令替换
1、 在单个命令行中使用多个命令的另一种方法(非Pipes)是通过命令替换
2、 echo “The date is ‘date’”
3、 expr 命令:用于求值算术表达式该命令的输出被送到标准输出:
expr 4 + 5 将在屏幕显示9
4、 算术展开:你可以在$((…))中括一个表达式,用下面的命令来计算他的值
5、 $((expression))
6、 例子:编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本应该接收一天内所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量
所有未应答的总数=所有询问的总数-应答的询问的数量
echo "Please enter the numberof queries reported today."
read totalqueries
echo "Please enter the numberof queries answered."
read answered
pending=$((totalqueries-answered))
echo "Number of calls pending =$pending"
条件执行:
Test和[] 命令:求值表达式,并放回true(0)或 false
If 构造:Linux shell提供了循环和判定的构造,可以在shell脚本中使用
算术测试:结合if构造,它可用于测试变量的数字值
串测试:test命令也可用于字符串
文件测试:test命令也可用于检查文件的状态
Exit命令:用于终止shell脚本的执行并返回到$提示符下
数值测试:
-eq:等于则为真
-ne:不等于则为真
-gt:大于则为真
-lt:小于则为真
-le:小于等于则为真
字符串:
=:等于则为真
!=: 不等于则为真
-z: 字符串长度为0则为真
-n: 字符串长度不为0则为真
文件测试:
-e:如果文件存在则为真
-r:如果文件存在且可读则为真
-w:如果文件存在且可写则为真
-x:如果文件存在且可执行则为真
-s:如果文件存在且至少一个字符则为真
-d:如果文件存在且是目录则为真
-f:如果文件存在且为普通文件为真
-c:如果文件存在且为字符型特殊文件则为真
-b:如果文件存在且为特殊文件则为真
-a 并且 –o 或者 !非
例子:
#!/bin/bash
echo"Enter the percentage of calls answered same day."
read score
if [$score -le 80 ]
then
echo "Your Grade is Average."
elif [$score -gt 80 -a $score -le 90 ]
then
echo "Your Grade is Good."
else
echo "Your Grade isOutstanding."
fi
~
Case..esac构造:
While构造:while <条件>
Do
<命令(s)>
Done只有条件为真是,就执行do和done
for构造:for varable_namein <list_of_values>
d--o… done for循环取一系列值作为输入并对循环每一个值
控制进程的执行:
请求后台处理:用于请求后台进程的符号是(&)
Wctempfile &
[1]2082
Vi newfile
检查后台进程:
Ps(进程状态)命令为每个当前活动每个进程产生一个入口
终止后台进程:Kill
查看完成一个命令所花的时间:time time find /etc –name “passwd” 2>/dev/null
垂直(|)是管道字符:比如:ls –l| more 将ls –l 的输出作为 more 的输入
管道命令功能强大:
今天就先到此:接下来应该是VI了,想了解更多可以到https://www.w3cshool.com/查阅相关教程
都说心情好听的是旋律,心情不好听的是歌词,小编觉得在操场上听听歌真的很不错,小伙伴们也可以试试哦,享受属于自己的宁静。
以上是关于Shell脚本的主要内容,如果未能解决你的问题,请参考以下文章