shell 脚本编程
1变量
(a)简单操作
chmod u+x xxx.xx //可以通过编译方式执行。
注意:1、等号左右没有空格则是判断 ; 2. echo ‘a=$a’ 取不出a的值。
(b) 参数变量
两个$$ :取解释器的PID号; (2)$# 统计环境参数的个数
//命令行输入两个环境参数 : bash my2.sh char name
(c)路径
设置一个环境变量并打印。
2. 条件 if case
3. 循环
3.1 for 循环
expr 算数运算累加和计算关键字
3.2while 循环
$( ) : 不知道怎么用
-eq //equals等于
-ne //no equals不等于
-gt //greater than 大于
-lt //less than小于
-ge //greater equals大于等于
-le //less equals小于等于
3.3 case 语句的 格式
[ ] 中括号可以指定每个字符的形式, | 竖杠表示逻辑或 , *表示不指定的任何输入的字符
3.4 until 循环的格式 (让我整丢了)
4. 函数
$? 代表最后一次执行的命令返回的结束代码(0表示正常,其他表示异常)
echo function.sh argc =$# 获取环境参数个数。注意此符号在函数中和函数外所统计的参数是函数内的参数一个是函数外的参数。
- 脚本调用脚本 ,传参
我们想执行b.sh 脚本去运行a脚本,我们想在a中调用b 的变量,由如下代码打不出mystr的值。
a.sh代码:
b.sh代码:
结果
我们可以用几种方法解决这个问题:
第一种:用 . ./ a.sh $ 或者 source 关键字
b.sh代码:
第二种:新增环境变量的方式(export关键字),在子进程中可以调用这个变量。
6. c语言调用脚本
6.C程序调用传参
awk 使用
如果格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务。
例子1:取浮点数的小数部分、
a.txt 内容都是浮点数:
$1 代表域1,$2就是域2 注意 .和 ’ 要分开。
也可以把取到的内容放到制定文件中。
awk -F. ‘{print $1}’ a.txt n.txt
例子2 选择打印etc/passwd 内容
例子3 过滤 之后得到想要的内容
sed 用法
插入操作
sed ‘2i\5.5’ a.txt >b.txt
删除操作
替换操作
sed ‘s/root/aaa/’ passwd >b.txt
sed 's/root/aaa/'g passwd >b.txt //全文替换
sort 排序操作
-u :去重
编译型 编译链接 生产可执行程序 执行效率高
解释型 需要解释器 通过解释器解释执行代码 python a.py bash my.sh
执行效率不高
java 编译型 xx.java->javac xx.class字节码 被解释器识别
java 虚拟机来解释执行JVM