Linux及shell脚本学习笔记----4 shell编程基础

4.1 shell内建命令

  1. type 查看命令是不是内建命令
  2. “ . ”(点号)
    点号用于执行某个脚本,没有加执行权限也可以运行:
    . ./hello.sh
    与点号类似,source命令也可读取并执行脚本
  3. alias 别名
    创建命令别名:alias myshoutdown=‘shoutdown -h now’
    为了确保永久生效,可以将该条目写到用户家目录中的 .baserc文件中
  4. 删除别名: unalias 命名别名
  5. 改变目录:cd 不加参数的话,默认进入当前用户的家目录。
  6. 打印字符:echo
echo  "hello world"
echo  -n "hello world"   #-n不打印换行
  1. break n 跳出几层循环
  2. continue n
  3. eval 将所跟的参数作为shell的输入,并执行产生的命令。
  4. export 在当前shell中暴露变量
  5. let 是shell内建的整数运算命令
    let I=3+4
  6. local 声明局部变量
  7. read 从标准输入读取一行到变量

4.2 变量

  1. 变量
example:
name=jack   #等号两边不要有空格;
name="jack"

变量取值:
echo $name
echo ${name}

取消变量:
unset name
取消函数:
unset  函数名
  1. 特殊变量
1 位置参数:
$0     #代表脚本本身
$1     #第一个参数
$n     #以此类推第n个参数
参数个数大于9时要用{}括起来:${10}
$# 表示脚本参数的个数综合
$@或者$* 表示脚本的所有参数

2 脚本或者命令返回值: $?
$? 永远是上一个命令的返回值
  1. 数组
1 数组定义:
declare -a Array  #定义一个名字为Array的数组
赋值:
Array[0]=0
Array[1]="helloworld"
更简单的创建数组方法:
Name=('jack' 'life')

2 数组操作
取数组元素: ${数组名[索引]}
echo ${Name[1]}
数组所有元素: ${Name[*]}或者 ${Name[@]}
数组长度: ${#Name[@]}或者 ${#Name[*]}
  1. 变量的作用域
linux中函数内的变量也会影响脚本中函数为定义的同名全局变量,可以通过在函数内声明为 local 变量来解决:
fun ch_var() {
  local VAR=200  
}
  1. 转义和引用
1  shell中的转义字符是反斜杠  '\'
2  引用是指将字符串用某种符号括起来,shell中一共有4种引用:单引号、双引号、反引号、和转义符
3  部分引用:
用双引号括起来的引用, $符、反引号、转义符这三种依然被解析成特殊意义
4  全引用:
单引号括起来的任何字符都只当做普通字符,单引号中间无法再包含单引号。
比如:echo '$VAR03'
输出结果: $VAR03
  1. 命令替换
命令替换是指将命令的标准输出作为值赋给某个变量。两种方式可以实现:
1. 反引号  ``
使用方法:   `命令`
2. $()
使用方法:  $(命令)
例子:DATE_01=`date`
DATE_02=$(date)
echo $DATE_01
echo $DAte_02
3. 如果被引用的命令输出内容包括多行,不通过引用的方式输出变量的话,输出内容的换行符会被删除,输出内容只占一行。
例子: LS=`ls -l`
不引用变量值输出: echo $LS
引用: echo "$LS"
4. 使用反引号的都可以使用$()代替,但是$()支持嵌套,反引号不行,$()只在Bash Shell中有效,反引号在多种UNIXshell中可以使用。
  1. 运算符
1. 算术运算符 + - *  /
例子:let "value=2+3"
echo $value
2. 位运算符  
3.$[]
例子:echo $[1+1]
4. expr 
例子:expr 1 + 1
要求操作数和操作符之前使用空格隔开,特殊字符需要使用转义
5. 算术扩展 $((表达式))
例子:i=2
echo $((2*i+1))
6. bc运算
直接输入bc,回车进入bc交互界面
  1. 特殊字符
1. 通配
例子: a* 通配以a开头的字符串,不包括点号和斜线号;
?可以通配任何一个单一字符
[]可以通配其中任意一个字符 [abc]代表匹配a或者b或者c

你可能感兴趣的:(linux)