csh 逻辑_shell脚本编写

一、shell脚本编程学习概述

(一)、学习shell脚本原因

提升工作效率

减少重复工作

完成批量操作

节省人力成本

(二)、学习shell必备知识

1、熟练使用编辑软件

vim

2、熟练使用常用命令

150个常用命令

三剑客命令

3、熟练使用系统符号

系统常用符号

系统通配符号

系统正则符号

(三)、学习shell方法技巧

(一)、技巧方法

会看脚本

模仿编写

(二)、高手核心

量的积累,产生质的变化

(三)、学习误区

依赖高手,拿来主义

二、shell脚本概念

Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等

(一)、解释器工作方式

采用交互式方式进行解释

采用非交互式方式进行解释

(二)、shell种类

/bin/sh ---> 是bash一个软链接

/bin/bash ---> linux系统默认使用shell解释器

/sbin/nologin ---> 无法登陆访问shell

/usr/bin/csh

/usr/bin/rsh

三、shell脚本需掌握内容

(一)、掌握脚本基本语法

1、变量设定

普通变量

定义方式

先写变量名称,紧接着是 "=" ,最后是值。中间无任何空格

调用变量

通过echo命令加上 $变量名,即可输出变量的值。

双引号,以防止出错变量的值一般要加上

变量永久生效

将变量设置编写到文件中

(/etc/profile /etc/bashrc ~/.bashrc ~/.bash_profile)

环境变量

定义方式

export info=“I am HQ”

调取变量

echo $info

永久生效:

将变量设置编写到文件中

(/etc/profile /etc/bashrc)

条件表达式

if判断语法

单分支语句

if [ ]

then #则

命令

fi

双分支语句

if [ ]

then #则

命令

else #否则

命令

fi

多分支语句

if [ ]

then

elif [ ]

then

elif [ ]

then

else

fi

for循环

while循环

case语句

函数语法规范

数组

(二)、定义变量规范:

变量不能使用数字开头

定义变量时“=”两边不能有空格

变量建议由字母与“_”组成

变量设置见名知其义

1、养成脚本编写规范

脚本保存目录规范

将脚本文件统一保存在指定目录中

2、脚本编写规范

1、一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容

2、在shell脚本中,跟在 # 后面的内容表示注释,用来对脚本进行注释说明,

注释部分不会被当做程序来执行,仅仅是给开发者和使用者看的,系统解释器是看不到的,更不会执行

3、Shell脚本的开头会加版本、版权等信息

# Date:16:29 2018-10-20 --> 脚本编写时间

# Author: Create by xiaoxie --> 脚本作者

# Description: This script function is …… -->脚本作用

4、在shell脚本中尽量不用中文注释,尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰

5、Shell脚本的命名应以.sh为扩展名 例如:This is a premium name

6、成对的符号应尽量一次性写出来,然后退格在符号内增加内容,以防止遗漏。这些成对的符号包括: {}、[]、‘’、“” 等

7、中括号[]两端至少要有1个空格,因此,键入中括号时即留出空格[ ],

然后在退格键入中间内容,并确保两端都至少由一个空格

8、对于流程控制语句,应一次性将格式写完,再添加内容

如:一次性完成for循环语句的格式

9、通过缩进让代码更易读

10、对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格,

需要强引用的,则用单引号(‘’),如果是命令的引用,则用反引号(``)

11、脚本中的单引号、双引号及反引号必须为英文状态下的符号

3、脚本运行方法

方法一:利用bash解释器命令运行脚本

[root@web01 /server/scripts/sh]# bash test01.sh

方法二:利用脚本绝对路径运行脚本

[root@web01 /server/scripts/sh]# /server/scripts/sh/test01.sh

方法三:利用 . 或者 source执行脚本

[root@web01 /server/scripts]# . /server/scripts/test01.sh

[root@web01 /server/scripts]#source /server/scripts/test01.sh

说明:三种方式区别

方法一 和 方法二 都是在子shell中执行脚本

方法三在父shell中进行运行

四、shell变量的设置

(一)、变量的赋值方法

方法一:直接赋值

a=1

方法二:传参赋值

a=$1

方法三:交互式赋值

read 变量名

read -p "提示信息" 变量名

read -t “输入超时时间” 变量名

(二)、脚本中特殊变量

位置变量

$0 用于获得脚本名称信息

应用示例

echo "Usage: $0 {请写入学生年龄和姓名}"

echo "学生名字: $1"

echo "学生年龄: $2"

$n 脚本的第n个传参数,n表示从1-9,大于9参数数量 使用${10}

应用示例

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

$# 位置参数的数量

应用示例

[ $# -eq 2 ] || echo "Usage: $0 {请写入学生年龄和姓名}"

$* 所有位置参数的内容,加引号时表示将多个参数作为一个整体

$@ 所有位置参数的内容,加引号时会将多个参数作为个体

不加双引号没有任何区别,将所有参数信息全部显示

加上双引号, 在循环体中,$* 会将所有参数看成一个整体,$@ 会将所有参数看成多个个体

状态变量

$? 获取上一个命令执行结果 成功用0 失败用非0

示例应用

[ $# -ne 1 ] && echo "Usage: $0 {请输入一个域名信息!}" && exit 2

ping -c 2 $1 &>/dev/null

[ $? -eq 0 ] && echo "This web_name $1 is ok. " || echo "This web_name $1 is error

$$ 获取一个脚本执行PID信息

示例应用

# $$ 获取脚本执行进程信息

echo $$ >/tmp/test.pid

$! 获取上一个程序或脚本后台运行的pid信息

示例应用

[root@web01 scripts ]# sh test04.sh & --- 让脚本在后台运行

[1] 118411

[root@web01 scripts ]# echo $! --- 获取上一个在后台运行脚本pid信息

118411

[root@web01 scripts ]# jobs --- 查看在后台运行的程序信息

[1]+ 运行中 sh test_ip.sh &

[root@web01 scripts ]# fg 1 --- 恢复后台运行程序到前台

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值