Shell编程

一、入门级
1、概念

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
Shell 是一种用c语言开发出来的脚本语言

2、常见的 Shell 有?

 sh、bash、csh、tcsh、ash 等。

3、关于shell

1)Shell 是一个程序,一般都是放在/bin或者/usr/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。
2)查看当前 Linux 系统的可用 Shell:cat /etc/shells

4、Linux Shell命令提示符

[root@localhost ~]$

各个部分的含义如下:

1) []是提示符的分隔符号,没有特殊含义。
2) root表示当前登录的用户,我现在使用的是 root用户登录。
3) @是分隔符号,没有特殊含义。
4) localhost表示当前系统的简写主机名(完整主机名是 localhost.localdomain)。
5) ~代表用户当前所在的目录为主目录(home 目录)。如果用户当前位于主目录下的 bin 目录中,那么这里显示的就是bin。
6) $是命令提示符。Linux 用这个符号标识登录的用户权限等级:如果是超级用户(root 用户),提示符就是#;如果是普通用户,提示符就是$。

超级用户的主目录为/root/,普通用户的主目录为/home/用户名/。

5、编写一个helloworld的shell脚本

打开文本编辑器,新建一个文本文件,并命名为 test.sh。
扩展名sh代表 shell,扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用php。
在 test.sh 中输入代码:

#!/bin/bash
#第二行起的#是注释语句,第一行是固定写法
echo "Hello World !"  #输出语句

第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell;后面的/bin/bash就是指明了解释器的具体位置。
第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指显示器)输出文本。在.sh文件中使用命令与在终端直接输入命令的效果是一样的。
第 2 行的#及其后面的内容是注释。Shell 脚本中所有以#开头的都是注释(当然以#!开头的除外)。写脚本的时候,多写注释是非常有必要的,以方便其他人能看懂你的脚本,也方便后期自己维护时看懂自己的脚本——实际上,即便是自己写的脚本,在经过一段时间后也很容易忘记。


6、执行shell脚本方式

1)如果在shell文件同级目录下:                                                                 ./test.sh
2) 直接运行 Bash 解释器(不需要在脚本文件的第一行指定解释器信息):                                  /bin/bash test.sh
   或者在 /bin 目录中:                                                                       bash test.sh
3)(在当前进程中运行 Shell 脚本)source 命令启动:source  test.sh   或者  .  test.sh

7、Shell 的四种运行方式:

交互式的登录 Shell;
交互式的非登录 Shell;
非交互式的登录 Shell;
非交互式的非登录 Shell。

二、中级
1、定义变量(3种方式)

variable=value
variable='value'
variable="value"

2、使用变量(2种方式)

author="金庸"
echo $author
echo ${author}

3、修改已定义的变量的值

url="http://www.baidu.com"
echo ${url}
url="http://www.baidu.com/shell/"
echo ${url}

4、单引号与双引号的区别

#!/bin/bash
url="http://www.baidu.com"
website1='百度网址:${url}'
website2="百度网址:${url}"
echo $website1
echo $website2

输出结果是:
百度网址:${url}
百度网址:http://www.baidu.com

结论:
如果变量的内容是数字,那么可以不加引号;
如果真的需要原样输出就加单引号;其他没有特别要求的字符串等最好都加上双引号,定义变量时加双引号是最常见的使用场景。

5、将命令的执行结果赋值给变量(2种方式)

其中,variable 是变量名,commands 是要执行的命令。commands 可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔。
variable=`command`
variable=$(command)                      (推荐写法)

eg、将日志读出来赋值给变量输出
cd demo
log=$(cat log.txt)
echo $log

eg、打印Linux当前时间戳

#!/bin/bash
a=`date +%s`
echo ${a}

6、只读变量

#!/bin/bash
Url="http://www.baidu.com"
readonly Url
Url="http://www.baidu.com/readonly"
#写完运行测试

7、删除变量

unset variable_name

eg、变量被删除后不能再次使用;unset 命令不能删除只读变量。
#!/bin/sh
url="http://www.baidu.com"
unset url
echo $url

8、Shell变量的作用域(3个)
局部变量

只能在函数内部使用
1) 在 Shell 函数中定义的变量默认也是全局变量,它和在函数外部定义变量拥有一样的效果。

eg、

#!/bin/bash
#定义函数
function func(){
    a=99
}
#调用函数
func
#输出函数内部的变量
echo $a

2)  要想变量的作用域仅限于函数内部,可以在定义时加上local命令,此时该变量就成了局部变量。

eg、

#!/bin/bash
#定义函数
function func(){
    local a=99
}
#调用函数
func
#输出函数内部的变量
echo $a

全局变量

在当前 Shell 进程中使用,在 Shell 中定义的变量,默认就是全局变量。

环境变量

在子进程中使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值