码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习笔记

时间:2015-12-20 10:28:05      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

  shell诞生于unix,是unix/linux交互的工具,单独地学习shell是没有意义的。

  shell需要依赖其它程序才能完成大部分工作,这或许是他的缺陷,但是它不容置疑的长处是:简洁的脚本语言标记方式而且比C语言编写的程序执行更快、更有效率。

  shell本身是一个用C语言编写的程序,它是用户使用unix/linux的桥梁,用户的大部分工作都是通过shell完成的,shell既是一种命令语言,又是一种程序设计语言。

  1. 作为命令语言,它交互式地解释和执行用户输入的命令。
  2. 作为设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构:包括循环和分支。

  shell有两种执行命令的方式:

    交互式:解释执行用户的命令,用户输入一条命令,shell就解释执行一条。

    批处理:用户事先写一个shell脚本,其中有很多条命令,让shell一次把这些命令执行完,而不必一条一条地敲命令。

  shell的种类很多:bash、sh、ash、csh、ksh等,bash是linux标准的shell,bash完全兼容sh。

  运行shell脚本有两种方式:

    作为可执行程序      ./test.sh

    作为参数解释器      /bin/sh   test.sh

  shell支持自定义变量

  定义变量

    定义变量时,变量名不加美元符号($):

      var iablename="value"

    注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

  变量名的命名遵循如下规则:

  1. 首个字符必须是字母
  2. 中间不能有空格,可以使用下划线(_)
  3. 不能使用标点符号
  4. 不能使用bash里的关键字

  使用变量

  使用一个定义过的变量,只要在变量名前面加上美元符号($)即可

your_name="mazhiyuan"
echo $your_name
echo ${your_name}

  推荐使用给所有变量加上花括号;这是一个好的变成习惯。

  已经定义的变量可以被重新定义。

  只读变量

  使用readonly命令可以将变量定义为只读变量,只读变量的值不能被修改。

  删除变量

  使用unset命令可以删除变量,变量被删除后不能再次使用;unset命令不能删除只读变量。

  变量类型

  运行shell时,会同时存在三种变量: 

局部变量

  局部变量在脚本或命令中定义,仅在当前shell实例中有效,其它shell启动的程序不能访问局部变量。

环境变量

  所有的程序包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行,必要的时候shell脚本可以定义环境变量。

shell变量

  shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

变量名只能包含字母、数字、下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。

 

变量

含义

$0 当前脚本的文件名
$n 传递给脚本或函数的参数,n是一个数字,表示第几个参数
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数,被双引号(“”)包含时,与$*稍有不同
$? 上个命令的退出状态或函数的返回值
$$ 当前shell进程ID,对于shell脚本,就是这些脚本所在的进程ID

          说明:

 "$*"会将所有的参数作为一个整体,以"$1 $2....$n"的形式输出所有参数

 "$@"会将各个参数分开,以“"$1" "$2"...."$n"”的形式输出所有参数

转义字符含义
\\ 反斜杠
\a 警报,响铃
\b 退格(删除键)
\f 换页(FF),将当前位置移到下页开头
\n 换行
\r 回车
\t 水平制表符(tab键) 
\v 垂直制表符

          说明:

 -e   对转义字符进行替换

 -E  禁止转义,默认也是不转义

  -n  禁止插入换行符

  命令替换是指shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。  

    `command`

  注意是反引号

  变量替换是指根据变量的状态(是否为空、是否定义等)来改变它的值。

可以使用的变量替换形式:

形式 说明
${var} 变量本来的值
${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。

shell学习笔记

标签:

原文地址:http://www.cnblogs.com/stlong/p/5060283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!