1. shell脚本概念:C语言编写的、命令解释器、编程语言。

是用户使用linux的桥梁。

shell脚本语言非常擅长处理文本类型的数据。

2. shell脚本作用:自动化管理、监控管理、日志数据处理、自动数据备份。

3. shell脚本中的成分:注释、命令、shell变量、结构控制语句。

以行为单位  一行一行依次执行。

(在shell脚本中可以出现任何在交互方式下可以使用的命令。)

4. 调用shell脚本的两种方式:

(1)sh 脚本文件名

(2)./脚本文件名(需要有执行权限)

当执行一个脚本文件时shell会产生一个子shell(即一个子进程)去执行命令文件中的命令。

5. Shell脚本编码规范:

一个bash脚本的正确的起始部分应该以#!开头,如:#!/bin/bash。在调用bash脚本的时候,以#!开头的语句通知系统使用何种解释器来执行脚本。

6. shell变量:

shell变量用于表示字符串、数值。

命名规范:

(1)首个字符必须为字母(a-z,A-Z) 或者_;

(2)中间不能有空格,可以使用下划线(_);

(3)不能使用其他标点符号。

变量赋值:变量名=值(赋值符号“=”两边不能有空格,否则将视为命令。)

注:shell的默认赋值是字符串赋值,要进行数字赋值要加“(())”。

引用变量的值:在变量名前面加一个“$”。

注:变量赋值的时候一定不能在前面加“$”。

示例:

v1=centos

echo $v1

为避免变量名和其他字符混淆要给变量名加上“{}”。

示例:

num=2

echo “This is the ${num}nd”

7. 数字的运算:

shell数值运算都是通过(())来计算的。

幂运算表示:**

示例:

a=10

b=20

echo $(($a+$b))

关系比较运算如果出现在中括号中则要使用-eq、-ne、-gt、-ge、-lt、-le等代替。

8. shell变量表达式:

${#string}:计算字符串的长度。

${string:position}:从位置position开始提取字符串。

${string:position:length}:从位置position开始提取长度为length的子串。

${string#substring}:从开头删除最短匹配子串。

${string##substring}:从开头删除最长匹配子串。

${string%substring}:从结尾删除最短匹配子串。

${string%%substring}:从结尾删除最长匹配子串。

使用实例:

${string#I*.}:删除I到.的所有字符(最短匹配)。

${string##I*.}:删除I到.的所有字符(最长匹配)。

9. 判断:

(1)test:

-f:文件是否存在

-d:目录是否存在

-r:文件是否有读权限

-w:文件是否有写权限

-x:文件是否有执行权限

-n:判断变量是否有值

-z:测试字符串是否为空串

示例:

filename=/home/wjt

test -f $filename && echo ‘exit’ || echo ‘not exit’

(2) []:

在中括号中必须都要使用空格来分隔

在中括号中的变量最好都要以双引号括起来

在中括号中的常量最好都以单引号括起来

示例:

[ “$a” == ”$b” ] && echo ‘yes’ || echo ‘no’

[ ‘12’ == ’10’ ]

(3)if-else多分支判断:

示例:

echo ‘Please input your hardware:’

read hd

if [ $hd == cpu ]; then

echo ‘Your cpu info is:’

cat /proc/cpuinfo

elif [ $hd == mem ]; then

echo ‘Your memory info is:’

cat /proc/meminfo

elif [ $hd == hard ]; then

echo ‘Your harddisk info is:’

df -h

else

echo ‘Wrong input’

fi

(4)case多分支判断:

示例:

echo ‘Please input an number’

read number

case $number in

1)

echo ‘Your input number is 1’;;

2)

echo ‘Your input number is 2’;;

3)

echo ‘Your input number is 3’;;

*)

echo ‘Wrong input’;;

esac

(5)select语句:让用户从一组不同的值中选择一个。

select表达式是bash的一种扩展应用,用于交互式场合。

示例:

#!/bin/bash

echo “Select a kind of fruit as your favorite:”

select fruit in “apple” “banana” “persimmon”; do

break;

done;

echo “Your favorite fruit is $fruit!”

10. 循环操作:

(1)while:

示例:

i=10

while (($i>5)); do

echo $i;

((i--));

done;

(2)until:

示例:

a=10

until [ $a -lt 0 ]; do

echo $a;

((a--));

done;

(3)for:

示例:

for((i=1;i<10;i++)); do

echo $i;

done;

注:while循环和until循环的区别:while循环在条件成立时执行;而until循环则在条件不成立时执行。

11. 函数(方法):

示例:

#!/bin/bash

function print()

{

echo “The number you input is $1”;

}

echo “Please input your number:”

read number;

case $number in

“one”)

print 1;;

“two”)

print 2;;

“three”)

print 3;;

*)

echo ‘wrong input’;;

esac

12. 引号:

在向程序传递任何参数之前,程序会扩展通配符和变量,即程序会把通配符替换成适当

的文件名,把变量替换成变量值。使用引号可以防止这种扩展。

单引号和双引号都可以防止通配符“*”的扩展。

双引号允许变量扩展,而单引号则可以防止变量扩展。

此外还可以使用转义字符“\”来防止通配符和变量名的扩展。

13. Here Document:

Here document用于将几行文字传递给一个命令。

Here document以“<<”开头,后面接上一个字符串,这个字符串还必须出现在here

document的末尾,中间则是要传递给命令的文字。

示例:

#!/bin/bash

#This programe receives three numbers and output the biggest one.

If [ $# -ne 3 ];  then

cat << HELP

This command requires three params.

Usage example: biggest 1 2 3.

HELP

exit 0

fi

a=”$1”

b=”$2”

c=”$3”

shift

shift

shift

if [ $a -gt $b ]; then

bigger=$a

else

bigger=$b

fi

if [ $bigger -gt $c ]; then

biggest=$bigger

else

biggest=$c

fi

echo $biggest

14. 命令行参数:

用户从命令行输入的参数可以在shell脚本中访问。

$#:表示参数个数

$@:表示所有参数列表

$*:表示所有单数列表

$n:表示第n个参数

$0:当前脚本的文件名

Linux系统Shell脚本编程的更多相关文章

  1. Linux系统——shell脚本

    shell脚本编程 作用:通过命令行解析的方式,自动执行设定好的程序或命令代码.(若将脚本挂到定时任务中,就会自动在非工作时间里自动触发执行程序) Shell脚本文件以“.sh”结尾 规范的Shell ...

  2. 【Linux】Shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  3. [Linux系统] (4)脚本编程

    一.bash shell 可以理解为一种解释器和启动器,解释命令文本,并执行命令. 命令来源: 用户交互输入 文本文件输入 1.示例,写一个最简单的文本 vi test.txt 写入以下内容: ech ...

  4. 【Linux】Shell脚本编程(三)

    流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真”: 退出条件:当CONDITIO ...

  5. Linux系统——shell脚本应用示例

    传入一个网段地址,自动找出本网段内存活的IP地址.2,将存活的IP地址当作密码来创建Linux用户,用户名格式为:你的名字_数字 3,有几个存活IP地址,就自动创建几个用户   4,最后将创建的用户名 ...

  6. 【Linux】Shell脚本编程(二)

    练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 for i in $(seq 0 2 ...

  7. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  8. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  9. Linux Shell脚本编程的注意事项

    Linux下(Shell脚本 http://www.jbxue.com/jb/shell/)编程的一些注意事项,如编程风格.命名风格等. 一.常用技巧 ssh user@server bash < ...

随机推荐

  1. Babel初体验

    原文地址:→传送门 写在前面 现在es6很流行,尽管各大浏览器都还不能支持它的新特性,但是小伙伴们还是很中意它呀,于是小小的学习的一下 Babel 这里我们不介绍es6相关内容,只是说下入坑前奏,记录 ...

  2. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  3. 数据库复用代码【c3p0配置文件、数据库连接池】

    前言 为了复用,记载一些以前写过的工具类.方法 c3p0配置文件[c3p0-config.xml] <?xml version="1.0" encoding="UT ...

  4. [13] static 和 final

    不论是类.属性,还是方法的声明中,都有一个可设置的"修饰符",它可以实现一些高级特性. 1.static static被称之为静态的,并不是指不可以修改的意思,而是说它的内存空间是 ...

  5. mariadb自带命令行客户端指令笔记

    mysql -H 主机IP -u 用户名 -p -p表示要输密码,不要直接输了,要回车后在程序里输入 显示数据库列表: show databases; 选择XX数据库: use XX; 显示数据库里的 ...

  6. 详细解读-this-关键字在全局、函数、对象、jQuery中的基础用法!

    一.前言 1. Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的设计模式来实现面向对象的编程,其 ...

  7. JS--微信浏览器复制到剪贴板实现

    由于太忙很久没写博客了,如有错误遗漏,请指出,感谢! 首先这里要注意,是微信浏览器下的解决方案,其他浏览器请自行测试. 先说复制到剪贴板主要有什么使用场景: 优惠券优惠码,需要用户复制 淘宝商品,需要 ...

  8. 我的第一个python web开发框架(3)——怎么开始?

    小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...

  9. 自己写实现char TO wchar_t 的转换

    wchar_t CharToWChart(char nChar){    wchar_t nR;    nR=nChar+32*256;    return nR;}//--------------- ...

  10. Eclipse连接SQL Server 2008数据库 以及问题总结

    Eclipse中使用SQL server 2008数据库 一.准备材料 要能够使用数据库就要有相应的JDBC,所以我们要去Microsoft官网下载 https://www.microsoft.com ...