#shell脚本-01#

1:shell介绍

  语言分类:编译型,解释型

2:适用环境

   开发一些小工具作用。

  举例子:一键部署web环境,日志分析,检查计算机硬件,服务器监控,服务器重启

 

3:为什么学习Shell原因:

  提升运维人员的工作效率,减少重复的工作劳动

4:运维的三个工具语言

  Shell  Python  Perl

5:Linux运维原则

  简单,易用,高效

 

6:常见的Shell

Sh  csh tcsh  ash  bash

 

7:shell是一道程序,存在哪里?

/bin   ,  /usr/bin

8:查看Shell有哪些

Cat  /etc/shells

9:这么多shell,查看当前系统使用的shell

Echo  $SHELL

 

8:Shell提示符

# 表示root用户

$ 表示普通用户

 

9:Shell提示符格式

$PS1  外层提示符的格式

$PS2  第二层提示符的格式

 

提示符格式组成:

\a  铃声字符

\d  格式为 “日月年”的日期

\e  ASCII转义字符

\h  本地主机名

\H  完全合格的限定域主机名

\j  shell当前管理的作业数

\1  shell终端设备名的基本名称

\n  ASCII换行字符

\r  ASCII回车

\s  shell的名称

\t  格式为"小时:分钟:秒"的24小时制的当前时间

\T  格式为“小时:分钟:秒”的12小时制的当前时间

\@ 格式为am/pm的12小时的当前时间

\u 当前用户的用户名

\v bash  shell的版本

\V  bash  shell的发布级别

\w  当前工作目录

\W  当前工作目录的基本名称

\!  该命令的bash   shell历史数

\#  该命令的命令数量

\$  如果是普通用户,则为美元符号$  如果是超级用户,则为#

\nnn  对应与八进制值nnn的字符

\\  斜杠

\[ 控制码序列的开头

\]  控制码序列的结尾

 

 

 

10:运维手链

用运维要干的事情组成的手链

Nginx

PHP运行时

Tomcat

LVS集群

ipable防火墙

MySQL数据库

Apache

OpenStack/Docker

KVM虚拟化

Zabbix监控

NFS存储

SSH服务

定时任务

基础命令

 

11:关于Linux的扩展名的理解

文件的扩展名是为了见名知意,好理解,不影响脚本执行

 

12:变量特点:

   组成:字母,数字 ,下划线

   以字母或者下划线开头

   不能用Linux系统专用的名词

 

13:单引号和双引号的区别

单引号:单引号里面是什么字符就原样输出,单引号里面不能用单引号,除非使用\

双引号:双引号里面的变量和命令要先被解析,然后才能输出

 

14:变量:

只读变量: readonly 变量名字

删除变量: unset  变量名

 

15:特殊变量:

 

$0 当前脚本的文件名

$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$# 传递给脚本或函数的参数个数。

$* 传递给脚本或函数的所有参数。

$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

$? 上个命令的退出状态,或函数的返回值。

$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

 

 

16:$* 和 $@的区别

"$*"  "$1 $2 $3 ...."

"$@"  "$1" "$2" "$2" ...

 

17:执行命名方式

 `命令`

$(命令)

 

18:变量替换

可以使用的变量替换形式:

形式 说明

${var} 变量本来的值

${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。

${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。

${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。

若此替换出现在Shell脚本中,那么脚本将停止运行。

${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。

 

 

19:shell数组:

  只能是一维数组

  定义: a=(a1 a2 a3)  或者 a[0] = a1 a[1]=a2  a[2]=a2

  读取数组:${array_name[index]}

 

 

使用@ 或 * 可以获取数组中的所有元素,例如:

${array_name[*]}

${array_name[@]}

 

 

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

纯文本复制

# 取得数组元素的个数

length=${#array_name[@]}

# 或者

length=${#array_name[*]}

# 取得数组单个元素的长度

lengthn=${#array_name[n]}

 

20:if  else 语句

 if [ expression ]

then

   Statement(s) to be executed if expression is true

Fi

 

if [ expression ]

then

   Statement(s) to be executed if expression is true

else

   Statement(s) to be executed if expression is not true

Fi

if [ expression 1 ]

then

   Statement(s) to be executed if expression 1 is true

elif [ expression 2 ]

then

   Statement(s) to be executed if expression 2 is true

elif [ expression 3 ]

then

   Statement(s) to be executed if expression 3 is true

else

   Statement(s) to be executed if no expression is true

fi

 

 

 

21:  test命令

数值测试

字符串测试

文件测试

 

22:case语句

 

case 值 in

模式1)

    command1

    command2

    command3

    ;;

模式2)

    command1

    command2

    command3

    ;;

*)

    command1

    command2

    command3

    ;;

Esac

 

23:for语句

for 变量 in 列表

do

    command1

    command2

    ...

    commandN

Done

 

24:while语句

while command

do

   Statement(s) to be executed if command is true

Done

 

25:until语句

until command

do

   Statement(s) to be executed until command is true

Done

 

26:函数

function_name () {

    list of commands

    [ return value ]

}

 

27:重定向

 

 

28:文件包含

 

. filename

source filename

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用中的代码是一个示例的shell脚本,其中使用了"-a"选项来表示逻辑与操作符。在这个示例中,它用于判断两个变量是否同时满足条件。如果第一个变量"str1"的值为"up",则执行相应的操作。这里的"-a"表示逻辑与操作,即只有当两个条件都成立时,整个条件语句才为真。 引用中的代码是另一个示例的shell脚本,其中使用了"-s"选项来判断文件是否存在且大小大于零。在条件判断中,使用了"!"来表示逻辑非操作符,即判断文件大小是否不为零。如果文件大小不为零,则执行相应的操作。 综上所述,"-a"在shell脚本中表示逻辑与操作符,用于判断多个条件是否同时成立;而"-s"则用于判断文件是否存在且大小大于零。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [shell之逻辑判断&&和-a区别(八)](https://blog.csdn.net/u010164190/article/details/78973383)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [shell脚本 -a到-z 含义](https://blog.csdn.net/IreneByron/article/details/126156137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值