赞
踩
shell编程 对比 C编程
shell编程: (1.执行过程,2.开发效率,3.执行效率,4.移植性)
解释型语言
边翻译边执行 (ls cp(程序))
擅长文件处理,操作系统管理
开发效率高 cp 1 2
执行效率低
移植性好
.c
编译型语言
先编译再执行 //gcc 编译 (.c ---> 机器代码)
擅长数据计算和数据处理
开发效率低
执行效率高
移植性差
shell脚本编写
1.shell脚本编写流程:
1.vim XX.sh #!/bin/bash //编辑文件
2.编写脚本
3.chmod +x XX.sh //给执行权限
4. ./XX.sh //执行文件
注意:
# --- 第一行 不要写注释 这些
文件类型 所属用户权限 所属组 其他人
- rw- rw- r--
chmod +x 1.sh
chmod 0777 01.sh
env //引用环境变量:
$PATH (加$应用路径里的值)
echo (打印)
echo $PATH(输出对应路径里的值)
键(key)值(value)对
KEY=value
main(int argc,char* argv[]) // a.out 1 2
@argc --- 命令行参数的个数
@argv --- 命令行参数对应的数组的首地址
$0:脚本文件名
$1:传入脚本的第一个参数
$2:传入脚本的第二个参数
...
$9:
${10}:
$#:传入参数的个数
$?:上一句shell命令执行的结果
0 表示成功 其它数为错误编码
$$:当前shell的PID
ps aux | grep 2389 查进程
自定义的变量:
注意:
(1).shell中数据是弱类型,默认识别为字符串类型
(2).不需要,先定义
(3).名字规则 ,遵循C的命名规则。 //(不要带空格)
不能带 $符号
[注]
给值的时候 等号两边不能有空格
var=123 (√)
var = 123 (x)
shell中的引号
"":打印字符串,遇到$变量($name)则打印变量中的值(name变量的值)
'':打印字符串,遇到$变量依然打印 $变量 (原样输出)
` `(反单引号,波浪号下面):将中间的字符串按照命令打印(命令置换)
read
read从标准输入读入一行, 并赋值给后面的变量,其语法为:
. read var
把读入的数据全部赋给var
. read var1 var2 var3
把读入行中的第一个单词(word)赋给var1, 第二个单词赋给var2, ……把其余所有的词赋给最后一个变量.如果执行read语句时标准输入无数据, 则程序在此停留等侯, 直到数据的到来或被终止运行。
read var1
read var2
输完一个要敲回车才输入下一个
运算:
expr :算术运算命令expr主要用于进行简单的整数运算,
#注意:
(1).符号两边要有空格
(2).注意对应的运算符是否需要转义
包括:
加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。
例如:
$ expr 12 + 5 \* 3
27
$ num=9
$ sum=`expr $num \* 6 `
$ echo $sum
54
分支语句
if 条件 //((表达式))或[ 表达式 ]
then
语句1
else
语句2
Fi
//多行注释
:<<!
...
!
//多分支
if 条件表达式
then
语句
elif [条件表达式] test里 -o或 -a与
then
语句
elif [条件表达式]
then
语句
else
语句
Fi
man test
-a and &&
-o or ||
test -eq 相等
test 10 -eq $i [ $i -eq 10 ] if( a == 10)
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
[ $i ge 0 -a $i lt 59 ]
//命令的写法
test 10 -eq $i
//中括号
[ $i -eq 10 ] //注意: 中括号里面,前后都要有空格。
//C风格
(( c语言风格的表达式 ))
test
-b 块设备文件 block test -b /dev/usb0 --- 硬盘
-c 字符设备文件 char --- 鼠标,键盘
-d 目录文件 directory
-f 普通文件 regular
-L 链接文件 link 类似 windows下的快捷方式 ln -s 源 目标
-S 套接字文件 socket (本地socket/网络socket )
-p 管道文件 pipe (管道) //进程的通信
//shell
case $num in
9)语句
;; //C中的 --- break
8|6|5|4)语句 //表示同一种情况
;; //C中的 break
7)语句
;;
*)语句 //default
;;
esac //esac --->case 反着写
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。