Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485617
  • 博文数量: 164
  • 博客积分: 4024
  • 博客等级: 上校
  • 技术积分: 1580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 16:27
文章分类

全部博文(164)

文章存档

2011年(1)

2010年(108)

2009年(55)

我的朋友

分类: C/C++

2009-10-12 17:35:57

今天学了一点点Shell的知识 总结下
一。概述
 
1.Shell脚本
如果你有一系列经常使用的linux命令,你可以把他们存储在一个文件中,Shell可以读取这个文件并执行其中的命令。这样的文件称为Shell脚本。
2.执行Shell脚本
要创建一个Shell脚本,你可以使用任何编辑器
和运行其他文件一样
前提:要有可执行的权限哦
3.echo命令
用于在屏幕上显示信息
echo -n不换行
4.#符号
用于在Shell脚本中注释
 
练:vi first.sh
   输入ls -l
   保存
   chmod a+x first.sh
./first.sh
 
二。变量
 
1.创建变量
可以再任何时间通过简单的赋值来创建
语法 变量名=值
linux中所有变量都被当做字符串
2.引用变量
$符号用于引用一个变量的内容
变量1=$变量2
3.读入值给变量
read 变量名
 
 
练:vi first.sh
echo "enter name;"
read name
echo $name
s=111
echo $s
 
三。本地和全局Shell变量
1.局部变量
当引用Shell时,只有创建它的Shell能够知道变量的存在
2.全局变量
成为子shell
用export 指定
3.环境变量
通过改变这些命令的值,用户能够定制此环境
HOMe:linux系统中的每个用户都有一个相关的称作home的目录
     当一个用户登录后,进入相应的home目录
      echo $HOME
PATH:包含一列用冒号定界的目录的路径名,便于可执行程序的搜索
PS1: ps1(prompt string 1) 变量包含Shell提示符,$符号
      $ps1=">"修改提示符
ps2:为第二个提示符设置值的环境变量
LOGNAME:包含用户的注册名字
SHLVL:包含你当前工作的Shell level
SHELL:存储了用户的缺省Shell
env命令:用来查看所有已移出的环境变量表和他们各自的值
 
 
练;env
   echo $HOMe
   echo $PATH
   修改path:vi etc/profile 在后面增加PATH=$PATH:.  EXPORT PATH这样运行文件就可以直接输文件名 不需要./了
 
四。命令替换
 
1.在单个命令行中使用多个命令的另一种方法(非管道)是通过命令替换
  echo "the date is `date`"
2。expr命令
用于求值算术表达式,该命令的输出被发送到标准输出
expr 4 + 5  注意空格哦
3.算术展开
$((表达式))
 echo $((4+5))
 
 练:echo "enter total"
    read total
    echo -n "enter you"有-n不换行
    read you
wo=$((total-you))
 
 
五。条件执行
 
1.test和[]命令
求值表达式,并返回true or false
2.if构造
linuxShell提供了循环和判定的构造,可以在脚本中使用
3.算术测试
结合if构造,它可用于测试变量的数字值
4.串测试
test
5.文件测试
test 也可用于检查文件的状态
6.exit命令
用于终止Shell脚本的执行返回到$提示符下
7.test数值测试
-eq 相等则为真
-ne 不等则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
8.test字符串测试
=:等于则为真
!=:不相等则为真
-Z字符串:字符串长度为0则为真
-n字符串:字符串长度部位0则为真
9.test文件测试
 -e:文件存在为真
-r:文件存在且可读为真
-w:文件存在且可写为真
-x:文件存在且可执行为真
-s:文件存在且至少有一个字符为真
-d:文件存在且为目录为真
-f:文件存在且为普通文件为真
-c:文件存在且为字符文件为真
-b:文件存在且为块特殊文件则为真
 
-a并且 -o或者  ! 非
 
 
练:echo “enter score;”
   read score
if [ $score -le 80 ]
then
echo "yiban"
elif [ $score -gt 80 -a $score -le 90 ]
then
echo "hao"
else
echo "henhao"
fi
 
 
六:case...esac构造
 
1.Shell脚本中,使用的这个构造依据变量的值而执行一组特定命令
2.当变量的值和其中一个指定的值相匹配时就执行写在该值下的一组命令
练:echo "services:"
   echo "1) ls"
   echo "2) ls -l"
echo "3) exit"
echo -n "choose[1-3]"
read choice
case $choice in
1) ls;;
2) ls -l;;
3) exit;;
*)echo "cuo";;
esac
 
 
七。迭代
 
1。while构造
while 条件
do 命令
done
只有条件为真时就执行do和done之间的命令
2.until构造
until的求值模式和while相反,until循环将继续执行直到求值的条件为真
3.for构造
for variable_name in
do
...
done
for循环取一列值作为输入并对循环中每个值执行循环
4.break和continue命令
break一起终止循环
continue将强迫一个新的重复
练:  ecode=1000
     while [ $ecode -le 1008 ]
     do
    echo "code=$ecode"
    echo -n "name"
     read name
    echo "$ecode:$name">>wrr
   ((ecode=$ecode+1))
done
 
七。控制进程的执行
 
1.请求后台处理
&
2.检查后台进程
ps
3.终止后台进程
kill 进程号
4.查看完成一个命令所花的时间:time
time find /etc -name passwd  2>/dev/null
 
 
八。管道的介绍
1.|
2.|前面的命令的输出作为|后面命令的输入发送
  ls -l |more
3.用管道组合命令,功能强大
 
阅读(623) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~