01-Shell 编程之执行

2、shell 脚本的执行

2.1、执行脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 方式一
sh/bash scripts.sh

# 方式二
chown +x ./scripts.sh && ./scripts.sh

# 方式三 source
# 格式:source 文件名 [参数]
# 作用:在当前 shell 中执行一个文件中的命令。
source scripts.sh

# 方式四 点
# 格式:. 文件名 [参数]
# 作用:在当前 shell 中执行一个文件中的命令。
. (空格) scripts.sh

# 方式五,效率较低
cat oldboyedu.sh |bash

2.2、sh 与 source 的区别

  • sh 会新建一个 Shell 窗口(新建一个进程)执行一个文件中的命令。
  • source 在当前窗口执行。
1
2
3
4
5
6
7
8
9
# sh 新建一个Shell窗口(新建一个进程)执行一个文件中的命令。
[lepeng@centos ~]# sh clsn_test.sh
Hello World!
[lepeng@centos ~]# echo $clsn

[lepeng@centos ~]# source clsn_test.sh
Hello World!
[lepeng@centos ~]# echo $clsn
Hello World!

面试题:问sh test.sh后echo $user返回的结果。答案:空

2、shell脚本的调试

2.1 脚本调试技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
调试技巧1:使用dos2unix处理脚本
从windows编辑的脚本到Linux下需要使用这个命令
dos2unix windows.sh


调试技巧2:使用echo命令调试
在变量读取或修改的前后加入echo $变量,也可在后面使用exit退出脚本,这样可以不用注释后面的代码


调试技巧3:sh -x 脚本 ==》全局调试,-x 开启脚本调试模式
sh -x scripts.sh


调试技巧4:局部调试
set -x
要调试的脚本内容
set +x

2.2 Shell调试技巧小结

  1. 要记得首先用dos2unix对脚本格式化。
  2. 直接执行脚本根据报错来调试,有时报错不准确。
  3. sh -x调试整个脚本,显示执行过程。
  4. set -x和set +x调试部分脚本(在脚本中设置)
  5. echo输出变量及相关内容,然后紧跟着exit退出,不执行后面程序的方式,一步步跟踪脚本,对于逻辑错误比较好用。
    写法:echo $var;exit
  6. 最关键的是语法熟练、编码习惯、编程思想,将错误扼杀在萌芽之中,减轻调试负担,提高效率。

01-Shell 编程之执行
https://flepeng.github.io/021-Shell-01-Shell-编程之执行/
作者
Lepeng
发布于
2016年1月1日
许可协议