SHELL第二课学习笔记

SHELL第二课学习笔记

A.脚本规范申明信息:

#!bin/bash
#Date 14:00 2014-1-30
#Author xiaoping
#Mail [email protected]
#Function: Thsi scrits funcion is ....
#version 1.1

~

B.注意点:

a.成对内容一次写出来

{}、[]、‘‘、``、""#

b.[]中括号两端需要空格

c.流程控制语句一次性写完格式

d.vi多行缩进

按v进入visual状态,选择多行,用shit+>或shit+<缩进或缩出

C.SHELL中的变量:


a.局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用的shell变量。

环境变量可以在命令中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或在全局配置/etc/bashrc,或/etc/profile文件或者/etc/profile.d/中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。范上的所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。

b、局部变量
局部变量的作用域被限定在创建它们的shell中。local函数可以用来创建局部变量,但仅限于函数内使用。局部变量可以通过简单的赋予它一个值或一个变量名来设置,用declare内置函数来设置,或者省略也可。

显示环境变量例如:

[xiaoping@localhost jiaoben]$ echo $HOME
/home/xiaoping
[xiaoping@localhost jiaoben]$ echo $PS1
[\u@\h \W]\$
xiaoping@localhost jiaobe
HISTSIZE记录在命令行文件中的命令行数
TMOUT退出前等待超时的秒数
vi /etc/profile  #后面添加然后保存测试

HISTSIZE=5   
TMOUT=5

[root@localhost jiaoben]# . /etc/profile
[root@localhost jiaoben]# timed out waiting for input: auto-logout 
[xiaoping@localhost jiaoben]$

[root@localhost jiaoben]# . /etc/profile
[root@localhost jiaoben]# history
  618  . /etc/profile
  619  history
  620  vi /etc/profile
  621  . /etc/profile
  622  history
[root@localhost jiaoben]# timed out waiting for input: auto-logout
[xiaoping@localhost jiaoben]$

D.自己定义的环境变量标准:(一般是字母,数字,下划线组成,字母开头)

a.export 变量名=value

b.变量名=value;exprot 变量名

c.declare -x 变量名=value 

提示:以上为三种设置环境变量的方法

E.定义局部变量

一般变量是数字不用引号,命令变量用``引用,其他用双引号。

单引号:

可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。

双引号:

把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。

不加引号:

不会将含有空格的字符串视为一个整体输出如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。

1

[root@oldboy oldboy]# echo ‘`date`‘
#→单引号时看到啥就显示啥
`date`
[root@oldboy oldboy]# echo "`date`"
#→双引号时如果里面是变量,会先把变量解析成具体内容在显示
Sat Oct 29 18:02:59 CST 2011
[root@oldboy oldboy]# echo `date`
#→对于连续的字符串等内容一般不加引号也可,加双引号一般比较保险,推荐
Sat Oct 29 18:03:08 CST 2011

拓展:awk调用shell变量问题

双引号:

可以说是所见即所得:即将双引号内的内容原样输出,或者描述为双引号里面看到的是什么就会输出什么。

单引号:

把单引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。

例1

ett@oldboy ~]$ ett=123   
[ett@oldboy ~]$ awk ‘BEGIN {print ‘$ett‘}‘
123
[ett@oldboy ~]$ awk ‘BEGIN {print "$ett"}‘
$ett
[ett@oldboy ~]$ ett=‘abc‘
[ett@oldboy ~]$ awk ‘BEGIN {print "$ett"}‘
$ett
[ett@oldboy ~]$ awk ‘BEGIN {print ‘$ett‘}‘
[ett@oldboy ~]$ awk ‘BEGIN {print "‘$ett‘"}‘
abc

F.脚本定义函数中的变量作用仅在函数中的作用。

总结:模仿炒作系统自带的etc/init.d/function函数库脚本的思路。

tar zcf etc_${date +%F}_xiaoping.tar




本文出自 “小k” 博客,请务必保留此出处http://zyp88.blog.51cto.com/1481591/1607600

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。