shell编程基础简介

来源:互联网 发布:windows 7 beta 编辑:程序博客网 时间:2024/05/24 00:34

shell编程简介

脚本执行
执行shell脚本程序有两种方式,一种是通过sh命令(sh HelloWorld.sh),另外一种是自执行方式(./HelloWorld.sh),脚本第一行是#!/bin/bash,它的作用是提示该脚本的执行路径是/bin/bash,自执行方式最终是通过/bin/bash HelloWorld.sh 执行脚本.

变量类型
shell脚本中的变量不需要进行类型定义,其类型都为String

变量作用范围:
1:自定义变量具有只能在当前进程中使用,当开启子进程时(使用bash命令),变量在子进程中不起作用,如果需要父进程中定义的变量在子进程中也能够使用,则需要将其设置为环境变量,环境变量使用export,比如:export t1,命令行窗口关闭或系统重新启动时会丢失。
2:需要在机器启动时环境变量就自动生效的话,可以将环境变量定义在~/.bashrc或/etc/profile文件中,其中~/.bashrc只对当前用户(例如当前用户是zhouzhihu,则只对本用户有效),如果想对所有用户都有效,则将其放置在/etc/profile文件中。

特殊变量含义
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

变量运算:
有三种命令可以进行基本的加减乘除等运算,它们是let, (( )), and [];注意:<只对整型数值有效,不适用于浮点数>
例如:

let first++   //对变量first执行递增操作let first+=10 //对变量first进行加10操作result=$[$first+$second] //将first和second两个变量相加,等同于result=$[first+second]reslut=$((first+second)) //first和second两个变量相加//浮点数参与运算,可以将echo与bc命令结合起来使用echo "$first*$second" | bc

文件描述符与文件重定向:
最常用的三种文件描述符号为stdin、stdout及stderr。stdin表示标准输入(standard input),文件描述符为0;stdout表示标准输出(standard output),文件描述符为1;stderr表示标准错误(standard error),文件描述为2。

//将信息写到文件当中,相当于覆盖了以前文件的内容echo "Shell Scripting 1" > shell.txt //当于echo “Shell Scripting 1” 1> shell.txt,只不过默认可以省略,标准错误的文件描述符2不能省略,因为省略的话默认是标准输出echo "Shell Scripting 2" >> shell.txt //以追加的方式将标准输出重定向到文件//将标准输出与标准错误输出都重定向到一个文件cmd &> output.txt //&>将标准错误输出转换为标准输出,相当于***2>&1***//标准输出重定向到文件teeStdout.txt当中,同时又作为more的标准输入ls  | tee teeStdout.txt | more

有时命令运行时,对于出错信息我们并不关心,又不想浪费存储空间存储这些错误信息,此时可以将其丢弃,具体做法是将标准错误输出重定向到/dev/null文件当中,/dev/null就像一个垃圾黑洞。

Sell数组:
shell中的数组有两种,一种为普通数组,另外的一种称为关联数组。普通数据的存取通过整数进行,关联数组的存取通过字符串进行。

//**定义数组**arr=(1 2 3 4 5 6) //注意: arr=(1,2,3,4,5,6) 用,号的话,数组只有一个元素//用*号将输出数组中的*所有内容*echo ${strArr[*]//*数组长度*echo ${#strArr[*]}

shell命令别名:
修改~/.bashrc文件设置别名,例如,在文件中添加alias ll=’ls -alF’,表示ll是命令’ls -alF’的别名

DATE时间:
这里写图片描述