linux 修改sh文件生效,Linux-shell脚本基础

linux 修改sh文件生效,Linux-shell脚本基础_第1张图片

本章内容

编程基础

脚本基本格式

变量

运算

条件测试

配置用户环境

编程基础

程序:指令+数据

程序编程风格:

过程式:以指令为中心,数据服务于指令

对象式:以数据为中心,指令服务于数据

shell程序:提供了编程能力,解释执行

程序的执行方式

计算机:运行二进制指令

编程语言:

低级:汇编

高级:

编译:高级语言-->编译器-->目标代码

java,C#

解释:高级语言-->解释器-->机器代码

shell, perl, python

编程基本概念

编程逻辑处理方式:

顺序执行

循环执行

选择执行

shell编程:过程式、解释执行

编程语言的基本结构:

各种系统命令的组合

数据存储:变量、数组

表达式: a + b

语句:if

shell脚本基础

shell脚本:

包含一些命令或声明,并符合一定格式的文本文件

格式要求:首行shebang机制

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

shell脚本的用途有:

自动化常用命令

执行系统管理和故障排除

创建简单的应用程序

处理文本或文件

创建shell脚本

第一步:使用文本编辑器来创建文本文件

第一行必须包括shell声明序列:#!

#!/bin/bash

添加注释

注释以#开头

第二步:运行脚本

给予执行权限,在命令行上指定脚本的绝对或相对路径

直接运行解释器,将脚本作为解释器程序的参数运行

脚本规范

脚本代码开头约定

1、第一行一般为调用使用的语言

2、程序名,避免更改文件名为无法找到正确的文件

3、版本号

4、更改后的时间

5、作者相关信息

6、该程序的作用,及注意事项

7、最后是各版本的更新简要说明

脚本的基本结构

脚本的基本结构

#!SHEBANG

CONFIGURATION_VARIABLES

FUNCTION_DEFINITIONS

MAIN_CODE

shell脚本示例

#!/bin/bash

# ------------------------------------------

# Filename: hello.sh

# Revision: 1.1

# Date: 2018/04/06

# Author: qjy

# Email: [email protected]

# Website: www.178linux.com/user/761044264

# Description: This is the first script

# ------------------------------------------

# Copyright: 2018 qjy

# License: GPL

echo “hello world”

name="cat /etc/fstab"

echo $name显示成一行

echo "$name"显示成原来的格式

脚本调试

检测脚本中的语法错误

bash -n /path/to/some_script

调试执行

bash -x /path/to/some_script

变量

变量:命名的内存空间

数据存储方式:

字符:

数值:整型,浮点型

变量:变量类型

作用:

1、数据存储格式

2、参与的运算

3、表示的数据范围

类型:

字符

数值:整型、浮点型to/some_script

强类型:变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。一般定义变量时必须指定类型、参与运算必须符合类型要求;调用未声明变量会产生错误

如java,c#

弱类型:语言的运行时会隐式做数据类型转换。无须指定类型,默认均为字符型;参与运算会自动进行隐式类型转换;变量无须事先定义可直接调用

如:bash不支持浮点数,php

变量命名法则:

1、不能使程序中的保留字:例如if, for

2、只能使用数字、字母及下划线,且不能以数字开头

3、见名知义

4、统一命名规则:驼峰命名法

bash中变量的种类

根据变量的生效范围等标准划分下面变量类型:

局部变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效

环境(全局)变量:生效范围为当前shell进程及其子进程

本地变量:生效范围为当前shell进程中某代码片断,通常指函数

位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数

特殊变量:$?, $0, $*, $@, $#,$$

局部变量

变量赋值:name=‘value’

可以使用引用value:

(1)可以是直接字串; name=“root"

(2)变量引用:name="$USER"

(3)命令引用:name=`COMMAND` name=$(COMMAND)

变量引用:${name} $name

"":弱引用,其中的变量引用会被替换为变量值

'':强引用,其中的变量引用不会被替换为变量值,而保持原字符串

显示已定义的所有变量:set

删除变量:unset name

name1=mage

name2=wang

name3=$name1

name1=zhangsir变量1改变了,变量3会改变么?

echo $name3=mage变量3不会变

练习

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

echo "The host is `hostname`"

echo "The ip is `ifconfig ens33 | grep netmask | tr -s " " | cut -d" " -f3`"

echo "The system is `cat /etc/redhat-release`"

echo "The kernel version is `uname -r` "

echo "The CPU is `lscpu | grep "Model name:" | tr -s " " | cut -d: -f2`"

echo "The memory is `cat /proc/meminfo | head -n1

你可能感兴趣的:(linux,修改sh文件生效)