Shell编程: shell脚本5种执行方式 | 脚本不同的执行方法和区别

前言

shell脚本是一种脚本语言,他不需要编译,而是直接通过解释器,将脚本作为解释器程序的参数运行的。

我们通过编写vim test.sh,然后用不同方法执行名为test.sh的脚本。

#!/bin/bash
echo "hello word"

概述

1)使用绝对路径执行。
2)使用相对路径执行。语法格式:./a.sh
3)使用 sh或bash命令来执行。语法格式: sh a.sh 不需要执行权限 -x参数(显示执行过程)
4)使用 . (空格)脚本名称来执行。 语法格式:. a.sh 不需要执行权限(特别注意:第一个.后面有空格)
5)使用 source 来执行。 语法格式:source a.sh 不需要执行权限(主要用于生效配置文件)

下面针对这5种方式,我们一起来看看它们的具体使用方式和区别吧!

正题

一、方式1绝对路径方式2相对路径,可以归纳为同一种方法

注意:新创建的脚本,默认没有x执行权限,需要给它用#chmod +x test.sh的方式,添加执行权限。在生产环境中不要轻易的给文件可执行权限;

[root@centOS7 shell]# /root/test/shell/test.sh   #使用绝对路径
hello word
[root@centOS7 shell]# ./test.sh  #使用相对路径

二、方式3使用 sh/bash命令来执行

注意:该方式虽然不需要手动给脚本添加x执行权限,但是它会改变脚本默认解释器类型。比如说:脚本首行定义的是#!/bin/bash,使用该方式,它会给你改用/bin/sh解释器,也就说,最终效果=#!/bin/bash --posix

特别之处:该方式1.不需单独给脚本分配x执行权限;2.甚至都不需要在脚本首行声明脚本解释器类型,因为脚本是被当做该命令的参数使用的。

注:你可能会对/bin/bash和/bin/sh区别感兴趣,点击这里

ls 
chomod -x test.sh  #给脚本移除x执行权限
ls
sh test.sh    #第3种方式运行
bash test.sh  #第3种方式运行

三、方式4使用 . (空格)脚本名称来执行

注:该方式,不需要单独添加x执行权限,它和source类似,权限继承与bash。

ls  #查看脚本(灰色的,说明没有x可执行权限)
. test.sh   #注意,点后面有个空格

  

四、方式5使用 source 来执行(主要用于生效配置文件)

ls  #查看脚本(灰色的,说明没有x可执行权限)
source test.sh   #该方式多用些操作,被修改后的配置文件(使之重新加载)

注意: 

.和source的权限,继承的是/bin/bash的权限,在执行时也是将test.sh作为参数,并不需要test.sh有执行权限;和bash执行不一样的是,source和.不会创建子进程,是在当前shell进程下执行的,因为他们是内建命令,所以脚本中赋值的本地变量也会影响当前shell的,用的时候一定要注意(尽量使用前面的3种方式)

区别

1.关于执行权限

仅前两种(相对路径、绝对路径)方法,需要chmod +x test.sh,给脚本单独添加x执行权限。后三种方法,均不需要单独添加x执行权限。

2.关于是否开启子shell线程

前三种方法,脚本执行时会开启一个子shell环境,在子shell执行完后,子shell环境随即关闭,然后又回到当前shell中。

后面两种. 和source方式,则是在当前shell中执行,不会开启子shell

shell脚本执行sql语句操作MySQL一般有以下五种方法: 1. 使用mysql命令行工具执行sql语句 使用mysql命令行工具可以直接连接MySQL数据库,执行SQL语句。在shell脚本中可以使用以下方式: ``` #!/bin/bash mysql -u user_name -pthe_password -h host_name -D database_name -e "sql_statement" ``` 其中,-u表示指定连接的用户名称,-p表示连接使用密码,-h表示数据库连接地址,-D表示指定连接的数据库名称,-e表示执行的sql语句。 2. 使用mysql客户端执行sql文件 将需要执行的sql语句以文件的形式输入到mysql客户端中执行。在shell脚本中可以使用以下方式: ``` #!/bin/bash mysql -u user_name -pthe_password -h host_name -D database_name < sql_file ``` 其中,<表示重定向标准输入,将sql_file中的内容传入mysql客户端,-u表示指定连接的用户名称,-p表示连接使用密码,-h表示数据库连接地址,-D表示指定连接的数据库名称。 3. 使用mysqldump命令备份数据库 使用mysqldump命令备份MySQL数据库,也可以将备份的数据库数据导入到MySQL数据库中。在shell脚本中可以使用以下方式: ``` #!/bin/bash mysqldump -u user_name -pthe_password database_name > sql_file ``` 其中,>表示重定向标准输出,将备份的数据写入sql_file中,-u表示指定连接的用户名称,-p表示连接使用密码,database_name表示指定备份的数据库名称。 4. 使用Shell函数封装MySQL操作 将MySQL的操作封装到Shell函数中,可以提高数据库操作的灵活性复用性。在shell脚本中可以使用以下方式: ``` #!/bin/bash function execute_sql() { mysql -u user_name -pthe_password -h host_name -D database_name -e "$1" } ``` 其中,$1表示传入的SQL语句参数。 5. 使用第三方脚本库或工具 可以使用第三方的脚本库或工具,实现对MySQL数据库的操作。例如,可以使用MyBatis、Flyway等库或工具来实现数据库操作。这些库或工具提供了更加方便的数据库操作方式
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值