两种学习方式

你想学习shell脚本编程,这很不错。于是你拿了一本书开始学习。一些人会首先通读整本教材后再上机练习。这种方法可能适用于一些人,但我却不太看好它。我的建议是,仅仅学一些最基础的能够让你开始编码的知识就可以了。之后,动手写一些简单的程序吧。一旦你由于知识上的欠缺而不得不停止时,再回到书本上去读你想要了解的那部分,然后继续做你的项目。如此周而复始,不断提高你的水平。这种边学边做的方法曾让我受益良多。


Linux系统脚本的三种执行方式(4种)

1 source bash_profile   . bash_profile两者等效   不需要执行权限

2 bash bash_profile   不需要执行权限

3 ./filename          需要执行权限


shell中的常规文件是指-rwxrwxrwx,有减号就是

#stat 文件名 便可以看出 有regular file标志的就是

文件类型对应于上面的st_mode, 文件类型有很多,比如常规文件、符号链接(硬链接、软链接)、管道文件、设备文件(符号设备、块设备)、socket文件等,不同的文件类型对应不同的功能和作用。

七种文件类型 -常规文件,d目录,l符号链接,b块设备,c字符设备,s套接字,p管道

四个引用符号  " ' ` \

四个shell命令执行顺序符号 &&,||,(),{}


变量名=值
取出变量值可以加一个美元符号($)在变量前面

变量名不可以直接和其他字符相连,如果想相连,必须用括号:

#num=2

#echo “this is $(num)nd!”

五种变量赋值方法:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取。

env与set的区别

env用于显示用户环境区中的变量及其取值;set用于显示本地数据区和用户环境区中的变量及其取值;unset用于删除指定变量当前的取值,该值将被指定为NULL;export命令用于将本地数据区中的变量转移到用户环境区。

新的变量会在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量。这些变量与环境变量不同,环境变量被存储在另一内存区,叫做用户环境区,这块内存中的变量可以被子进程访问

env(查看全局环境变量)

set(显示为某个特定进程设置的所有环境变量,包括全局变量,剩下的为局部变量)


四种变量类型

环境变量(也叫shell变量)  是一类Shell预定义变量。环境变量由系统统一命名,全部大写。部分系统变量的值由系统设定,部分环境变量的值可以由用户给定。由export关键字处理过的变量叫做环境变量。因为通常情况下仅仅在登录脚本中使用环境变量。

位置变量(也叫shell参数)  函数,脚本等都需要参数,就是用来获得这些参数的。相当于其它编程语言的形参

$0 $1 $2 $3 $4 $5 $6 $7 $8 $9

特殊变量(预定义变量)  $! $* $# $? $$ $@

自定义变量


登录shell
会从4个不同的启动文件里读取命令,顺序依次为:
/etc/profile
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
其中/etc/profile是系统上默认的bash shell的主启动文件,另外三个是用户专有
$HOME.profile中会检查系统上有没有$HOME/.bashrc文件,如果有则执行


RETVAL=$?  是将前面的执行结果赋给retval

没有规定在设置变量时一定要用双引号,但在进行字符串比较时必须这样做

当使用字符时,应总是使用双引号,无论它是单个字符串或是多个单词。


echo -n "Enter your name:"  //参数-n的作用是不换行,echo默认是换行

要使转义符生效,需加参数-e