发表于: 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
评论