bash编程学习
先简单写一点,以后在整理
记性不好,看完就忘…
sh bash脚本编程调试
当我们写c或其他程序时,都有调试这一技能,调试可以说是很重要的了…能节约你的时间,shell脚本也有调试…
两种方式–执行时添加参数 脚本里添加参数
|——
假如现在要执行的脚本叫做test.sh,那么
bash -n test.sh
可以检查脚本语法是否有错,无错误没有任何输出,echo $?可以得0.同理,其他的参数也一样.
另外这些参数可以组合使用–但是,当加入n后,脚本就不会执行了,所以-nx
的x
将不会起作用…
脚本第一行一般都是
#!/bin/bash
...#脚本内容
...
这种指定哪个解释器执行脚本的语句,这样,参数可以跟在后面:
#!/bin/bash -n
...#脚本内容
...
这样就可以检查语法错误了
另外还可以针对某一段执行,如:
#!/bin/bash
...#段1
...
set -n#开始检查语法
...#段2
...
set +n#停止检查
这样就可以只针对段2检查语法错误,-n
开始,+n
停止,另外的x
,v
也是一样
运算符
今天看脚本把&& | 和c里面的逻辑运算符混了… |
|——
这里说的返回0,是一个环境变量$?
,总之不能跟逻辑与或混了…
bash支持的运算符如下:
变量
|——
注1
:source或.执行脚本即当前shell执行,不是在子程序里执行,可以做到立即生效的作用
比较有用的几个环境变量:
|——
关于变量内容的操作
|——
一些有用的管道命令
|——
注
:
脚本编写
**test命令 与判断符号 [ ]**
注意:判断符号里面都要有两个空格分隔如[空格
-e filename空格
]
判断符有以下特点:
- 在中括号 [] 内的每个组件都需要有空格键来分隔;1. 在中括号内的变量,最好都以双引号括号起来;1. 在中括号内的常量,最好都以单或双引号括号起来; **条件判断**
原型:
if[ expr1];then
...
elseif[expr2];then
...
elseif[exprn];then
...
else
...
fi
原型
case $var in
变量内容1)
...
;;
变量内容2)
...
;;
*)
...
;;
easc
最后的*)
相当于switch里的default
**循环**
原型:
while [ condition ]
do
程序段落
done
until [ condition ]
do
程序段落
done
for var in con1 con2 con3 ...
do
程序段
done
#作为循环选取,可使用`$(seq 1 100)`或bash内建的{1..100}来完成1
#到100序列,字母也可以如{a..g}
for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done
分号
在Linux bash shell中,语句中的分号一般用作代码块标识
比如
if [ -f requirements.txt ]; then echo ok; fi
和
if [ -f requirements.txt ]
then echo ok;
fi
效果是一样的。如果你在shell里面按行依次输入命令,然后查看命令历史,看到的也是一行的以分号分割的命令。