IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Shell 编程 -> 正文阅读

[系统运维]Shell 编程

目录

一、两种执行方式

1、sh hello.sh

2、./hello.sh

二、一个简单的shell脚本

1、需求

2、编辑shell脚本如下

三、shell中的特殊变量

1、 $n

(1) 基本语法

(2)一个简单的输入参数小例子

2、 $#

(1)基本语法

(2)一个简单的例子

3、 $*? ?和 $@

(1)基本语法

4、 $?

(1)基本语法

(2)小例子

四、运算符

1、基本语法

(1)$((运算式子))? ?或者? $[运算式]

(2)expr? + , - , \* , / , %? ?加? 减? 乘? 除? ?取余?

2、案例

(1)简单的四则运算

(2)复杂一点的乘法(3+2)*4

(3)常用的 $[运算式]? 解决 (3+2)*4

五、条件判断

1、基本语法

2、常用条件判断

(1)两个整数之间的比较

(2)文件权限判断

(3)文件类型判断

(4)简单小例子

(5)多条件判断(&&?表示前一条命令执行成功,才执行后一条命令,||? 表示上一条命令执行失败,才执行下一条命令)

六、流程控制

1、if判断

(1)基本语法

(2)案例实操

2、case?判断

(1)基本语法

(2)?案例实操

3、for?循环

(1)基本语法1

(2)案例实操1

(3)基本语法2

(4)案例实操2? 一般和? $*? ?和 $@? 在一起使用

4、while?循环

(1)基本语法

(2)案例实操1

七、read?读取控制台输入

1、基本语法

2、案例实操

(1)提示 7?秒内读取控制台输入的名称

八、函数

1、系统函数

(1)basename

(2)dirname

2、自定义函数

(1)基本语法

(2)? 一个例子


一、两种执行方式

1、sh hello.sh

本质是bash 解析器帮你执行脚本,所以脚本本身不需要执行权限

2、./hello.sh

本质是 脚本需要自己执行,所以需要执行权限

二、一个简单的shell脚本

1、需求

在root家目录下的shell目录下的test目录下 创建 test1.txt 文件,并输入内容 aaaa

2、编辑shell脚本如下

#!/bin/sh
cd /root/shell/test
touch test1.txt
echo "aaaa" >> test1.txt

>? ? 是覆盖

>>? ?是追加

三、shell中的特殊变量

1、 $n

(1) 基本语法

n 为数字 ,$0 代表该脚本的名称,$1 - $9 代表第一到第九个参数,十以上的参数,需要用大括号包含,比如 ${10}

(2)一个简单的输入参数小例子

脚本内容如下:

#!/bin/sh
echo "$0 $1 $2"

执行如下:

[root@hadoop shell]# sh test1.sh aa bb
test1.sh aa bb

2、 $#

(1)基本语法

获取所有输入参数的个数,常用于循环

(2)一个简单的例子

脚本内容

#!/bin/sh
echo "$0 $1 $2"
echo "$#"

执行结果

[root@hadoop shell]# sh test1.sh  aa bb
test1.sh aa bb
2

3、 $*? ?和 $@

(1)基本语法

$*? ?(这个变量代表命令行中所有的参数,把所有参数看做一个整体)

$@ (这个变量也代表命令行中所有的参数,但是他把每个参数区分对待)

4、 $?

(1)基本语法

最后一次执行命令的返回状态。若为0代表上一个命令执行正确,否则代表上一个命令执行的不正确。

(2)小例子

[root@hadoop shell]# cd .
[root@hadoop shell]# echo $?
0
[root@hadoop shell]# cd.
-bash: cd.: command not found
[root@hadoop shell]# echo $?
127

四、运算符

1、基本语法

(1)$((运算式子))? ?或者? $[运算式]

(2)expr? + , - , \* , / , %? ?加? 减? 乘? 除? ?取余?

注意? expr? 运算符之间要有空格 ?

2、案例

(1)简单的四则运算

[root@hadoop shell]# expr 2 + 3
5
[root@hadoop shell]# expr 2 \* 3
6

(2)复杂一点的乘法(3+2)*4

[root@hadoop shell]# expr `expr 3 + 2` \* 4
20

(3)常用的 $[运算式]? 解决 (3+2)*4

[root@hadoop shell]# echo $[(3+2)*4]
20

五、条件判断

1、基本语法

[ condition ]? ?(注意? condition为条件 ,其前后都有空格)

注意:条件非空即为true。

2、常用条件判断

(1)两个整数之间的比较

=字符串比较
-lt小于(less? than)
-le小于等于(less?equal)
-eq等于(equal)
-gt大于(greater?than)
-ge大于等于(greater?equal)
-ne不等于(not?equal)

(2)文件权限判断

-r有读的权限(read)
-w有写的权限(write)
-x有执行的权限(execute)

(3)文件类型判断

-f文件存在,并且是一个常规的文件(file)
-e文件存在(existence)
-d文件存在,并且是一个目录(directory)

(4)简单小例子

[root@hadoop shell]# [ 23 -ge 24 ]
[root@hadoop shell]# echo $?
1
[root@hadoop shell]# [ -x hello.sh ]
[root@hadoop shell]# echo $?
0

(5)多条件判断(&&?表示前一条命令执行成功,才执行后一条命令,||? 表示上一条命令执行失败,才执行下一条命令)

六、流程控制

1、if判断

(1)基本语法

if [?条件判断式?]

then

    程序
elif 
then
    程序
else
    程序
fi

(2)案例实操

需求:输入一个数字,如果是1,则输出?TRUE!,如果是2.则输出? FALSE!,如果是其它,则什么也不输出。

shell脚本如下:

#!/bin/sh
if [ $1 -eq "1" ]
then
        echo "TRUE!"
elif [ $1 -eq "2" ]
then
        echo "FALSE!"
fi

执行如下:

[root@hadoop shell]# sh test2.sh 1
TRUE!
[root@hadoop shell]# sh test2.sh 2
FALSE!
[root@hadoop shell]# sh test2.sh 3

2、case?判断

(1)基本语法

case  $变量名  in
"值1")
    执行程序 1
;;
"值2")
    执行程序 2
;;
*)
    执行默认(变量值不在以上选择里)
;;
esac

(2)?案例实操

需求:输入一个数字,如果是1,输出?TRUE,如果是2,输出FALSE,如果是其它,输出WIN

shell脚本如下:

#!/bin/sh
case $1 in
"1")
        echo "TRUE"
;;
"2")
        echo "FALSE"
;;
*)
        echo "WIN"
;;
esac

脚本执行如下

[root@hadoop shell]# sh test3.sh 1
TRUE
[root@hadoop shell]# sh test3.sh 2
FALSE
[root@hadoop shell]# sh test3.sh 44
WIN

3、for?循环

(1)基本语法1

for ((初始值;循环控制条件;变量变化))
do
    程序
done

(2)案例实操1

需求:从 1?加到 100

shell?脚本如下:

#!/bin/sh
sum=0
for ((i=1;i<=100;i++))
do
        sum=$[$sum+$i]
done
echo $sum

执行结果如下

[root@hadoop shell]# sh test4.sh 
5050

(3)基本语法2

for 变量 in 值1  值2  值3
do
    程序
done



解释:将后面的值一一赋给前面的变量

(4)案例实操2? 一般和? $*? ?和 $@? 在一起使用

需求:打印所有输入参数

shell?脚本如下

#!/bin/sh
for i in "$*"
do
	echo "aaaaa $i"
done


for j in "$@"
do
	echo "bbbb $j"
done

执行情况如下

[root@hadoop shell]# sh test5.sh  oo pp gg
aaaaa oo pp gg
bbbb oo
bbbb pp
bbbb gg

4、while?循环

(1)基本语法

while [ 条件判断式 ]
do
    程序
done

(2)案例实操1

需求?从1加到100

shell?脚本如下

#!/bin/sh
s=0
i=0
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done
echo $s

执行结果如下

[root@hadoop shell]# sh test6.sh 
5050

七、read?读取控制台输入

1、基本语法

read (选项)(参数)

选项:
    -p  指定读取时的提示符
    -t  指定读取值时等待的时间(秒)

参数:
    变量:指定读取值的变量名

2、案例实操

(1)提示 7?秒内读取控制台输入的名称

?shell?编程如下

#!/bin/sh
read -t 7 -p "Enter your name in 7 second: " name
echo $name

执行结果如下

[root@hadoop shell]# sh test7.sh 
Enter your name in 7 second: aa
aa

八、函数

1、系统函数

(1)basename

截取一个文件绝对路径中,最后的文件名,如下:

[root@hadoop shell]# basename /root/shell/hello.sh 
hello.sh
[root@hadoop shell]# basename /root/shell/hello.sh .sh
hello

(2)dirname

截取一个文件绝对路径中,去除文件名的路径,如下:

[root@hadoop shell]# dirname /root/shell/hello.sh 
/root/shell

2、自定义函数

(1)基本语法

[ function ] funname[()]
{
    Action;
    [return int;]
}
funname

(2)? 一个例子

需求? 控制台上输入两个值,函数接受?并对他们求和输出

shell脚本如下

#!/bin/sh
function sum()
{
        s=0
        s=$[$1+$2]
        echo $s
}
read -p 'input 1 num:' a
read -p 'input 2 num:' b

sum $a $b

执行结果如下

[root@hadoop shell]# sh test8.sh 
input 1 num:1
input 2 num:2
3

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:29:31  更:2022-05-07 11:30:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:59:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码