发表于: 2016-10-15 22:30:33

0 773


今天学到的内容

1执行shell脚本的四种方式:

1)切换到shell脚本所在的目录(称之为工作目录),执行./脚本,其中./的意思是当前目录。如果不加上./,则不会被执行。要想执行哪个脚本,需要告诉系统你要执行的脚本在哪里(1绝对路径2相对路径),这里./就是相对路径的方式告诉系统要执行哪个脚本。

2)绝对路径的方式执行script,即/path/to/working/script

3)直接使用bash或者sh执行,但是需要先切换到脚本所在的目录(工作目录),然后执行sh script或bash script。这种方法不必要求scrip有可执行的权限

4)在现行的shell下执行source /path/to/working/script或者是.  /script 在这里.与/之间最少要有一个空格。

shell脚本的排错方法

1)检查shell脚本的语法错误

Bash -v 脚本

2)不执行仅查看script的代码

Bash -n 脚本

3)追踪script的执行过程

Bash -x 脚本

4)强制变量一定要经过声明才能使用

shopt -a -o nousent  这个可以避免打错变量

5)在特定的位置摆放echo命令,这样来监督程序的执行。


位置变量:

一、shell脚本之位置变量:

$0       脚本的名称 
$1,$2,$3....
   第一个参数,第二个参数,第三个参数  
shift
      每shift一次,参数位置往前一个($2-->$1,$3--->2,... 
shift
 N     往前的移动是N个    

实例,使用位置变量的实例

 

输入一个文件,判断文件是directory还是file

1

2

3

4

5

6

7

8

9

10

11

12

13

14




[root@localhost test]# cat 3.sh

#!/bin/sh

for file in $1    使用了位置变量

do

    if [ -d "$file" ]

    then

      echo "$file   is a directory"

    elif [ -f "$file" ]

    then

       echo "$file   is a file"

    fi

done


理解了怎么使用位置变量

在使用变量做加法的时候注意:sum=$[sum+i]----->>[ ]内的变量都不带$符号。

for file in ${ls /root/boot};do   这种是错误的

for file in $(ls /root/boot);do 或者for file in `ls  /root/boot`;do



返回列表 返回列表
评论

    分享到