Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1446765
  • 博文数量: 239
  • 博客积分: 5909
  • 博客等级: 大校
  • 技术积分: 2715
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-24 20:19
文章分类

全部博文(239)

文章存档

2014年(4)

2013年(22)

2012年(140)

2011年(14)

2010年(59)

我的朋友

分类:

2010-08-18 17:56:26

之前想写shell编程呢,突然发现自己对shell编程也仅仅是个初学者,不敢写这么大的内容,所以严谨一点,还是学习shell编程吧。

shell是与kernel相对应的概念,可以认为它是一个用户和kernel交互的工具。shell可以分为C shell 和 B shell。其中BASH是linux下面默认的shell。优点:记忆命令功能,档案比对补全功能,命令别名功能,工作控制和前景背景控制功能。

echo: 显示变量内容; env: 显示系统中主要的预设变量内容; set: 显示系统中全部的变量内容。 unset:  取消变量; export: 设定环境变量; read: 接收用户键盘输入; array: a[索引]=内容; echo ${a[索引]}; $RANDOM: 随机数; eval: 二次迭代。eval echo \$$a;  alias: 命令别名, alias rm='rm -i'; 取消别名:unalias;

系统设定档案: /etc/profile  /ect/bashrc  /etc/man.config
个人设定档案: ~/.bash_profile   ~/.bashrc  ~/.bash_history

绝对路径与相对路径

命令重导向: stdin: 0; stdout: 1; stderr: 2;
ls -al > list.txt or ls -al >> list.txt  or  ls -al 1>list.txt 2>list.err  or ls -al 1>list.txt 2>&1  or ls -al 1>list.txt 2> /dev/null

管线命令: |: last | grep root |wc -l
cut: 同一行的数据进行分解
sort: -n:纯数字排序  -r:反向排序  -u:相同行只出现一次
wc: -l:多少行 -m:多少字符 -w:多少字
uniq: 重复的行删除只显示一个
tr: tr '[a-z]' '[A-Z]' 大小写转换,tr -d SET:删除SET字符串, -s:取代重复的字符
split: -b:以档案size来分,-l:以行数来分

当写scripts时,如果需要计算则必须区分数字与字符,可以使用declare,如:declare -i a=3;
-a:定义数组;-f:定义函数;-i:定义整数;-r:定义只读;-x:定义透过环境输出变量
sh myscript opt1 opt2 opt3 则:$0=myscript $1=opt1 $2=opt2 $3=opt3

逻辑判断式
条件式判断:if [] && []; then 执行  elif [] || []; then 执行 else 执行 fi
case string in
 方式一) 执行
 方式二) 执行
 *) 执行 exit
esac
循环:for((条件1;条件2;条件3)) do 执行 done
for var in var1 var2.. do执行 done
while [] && { || } [] do 执行 done
until [] && { || } [] do 执行 done
阅读(892) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~