1.Shell 编程从入门到精通 --- 第一个 Shell 程序

1.如何运行 shell 程序
	1.使文件具有可执行权限,直接运行(chmod +x)
	2.直接调用命令解释器执行程序
	3.使用 source 执行文件
		在使用 source 执行 shell 脚本时,不会创建子进程,而是在父进程中直接执行,语法如下:
		source file
		. 	   file
		source 命令通常也被称为 '点命令',通常用于重新执行刚刚修改的初始化文件,使之立即生效。与其他运行脚本不同的是,source 命令影响shell 进程本身。
	在脚本执行过程中,并没有进程的创建和消亡。当需要再程序中修改当前shell本身的环境变量时,使用source命令。


2.shell 命令种类
	1.内建命令
		就是shell程序本身保护的命令。这些命令集成在 shell 解释器中。部分内建命令的存在是为了改变shell本身的属性设置,在执行内建命令时,
	没有进程的创建和消亡;另外一部分内建命令则是IO命令,例如echo命令。

	2.shell 函数
		shell 函数是一系列程序代码,以shell语言写成,它可以像其他命令一样被引用。

	3.外部命令
		外部命令是独立于 shell 的可执行程序。例如,find,grep等。命令行shell在执行外部命令时,会创建一个当前shell的复制进程来执行。在执行
	过程中,存在进程的创建和消亡。外部命令的执行过程如下:
		1.调用POSIX系统 fork 函数接口,创建一个命令行shell进程的复制(子进程)
		2.在子进程的运行环境中,查找外部命令在Linux文件系统中的位置。如果外部命令给出了完全路径,则忽略
		3.在子进程里,以新程序取代shell拷贝并执行(exec),此时父进程进入休眠,等待子进程执行完毕。
		4.子进程执行完毕之后,父进程接着从终端读取下一条命令。

3.shell 变量
	shell 并不对变量区分类型,一切都是字符串。
	add_1=100 
	Linux Shell 中的变量都是字符串类型,但是同样可以执行比较操作和整数操作,只要变量字符串是数字。= 号两边不要有任何空格。当包含空格的时候,请加引号。
	$with_space 事实上只是 ${with_space} 的简写形式。在某些上下文中,$with_space 可能会引起错误,这时候就需要用 ${with_space} 了。
	“” 双引号扩起来的变量替换是不会被阻止的。所以双引号被称为 部分引用,有时候也被称为 '弱引用'。但如果是 '' 单引号的话,变量替换就会被禁止了,变量只会
  被解释成字面的意思,所以单引号被称为 '全引用',有时候也被称为 '强引用'。

    变量类型:
    	1.局部变量
    	2.全局变量

    环境变量:
    	通常情况下,每个进程都有自己的'环境',这个环境是由一组变量组成的,这些变量中存有进程可能需要引用的信息。
    	每当一个shell启动时,它都将创建适合于自己环境变量的shell变量。更新或者添加一个新的环境变量的话,这个shell都会立即更新它自己的环境,换句话说,
    更改或者添加的变量会立即生效,并且所有后续生成的 shell 子进程(即这个 shell 所执行的命令)都会继承这个环境。
    	如果一个脚本需要设置一个环境变量,那么需要将这些变量 'export'出来,也就是需要通知到脚本本地环境。这就是命令 export 的功能。
    	一个脚本只能够 export 变量到这个脚本所生产的子进程,也就是说只能够对这个脚本产生的命令和进程起作用。如果脚本是从命令行中调用的,那么这个脚本所 
    export 的变量是不能影响命令行环境的。也就是说,子进程是不能够 export 变量影响产生自己的父进程的环境的。但是,当使用 source 命令执行脚本的时候,因为
    没有子进程产生,此时脚本中的 export 命令将会影响父进程的环境。
    	export 命令用于设置当前进程的环境变量。但是有效期仅维持到当前进程消亡为止。下次重新登录到命令行shell时,以前对 shell 的 export 设置都无法恢复。
    如果想要把对环境变量的设置永久保存,则可以将 export 命令至于 shell 登录时执行的启动文件中。例如,
    	export PATH=...

    env 与 set:
    	env 显示的是环境变量,set 函数显示的是所有本地变量,包括用户的环境变量。例如,当用户在命令行中设置 var=123 时,set 函数将显示var变量,env 函数则
    不显示(var此时是本地变量,不是环境变量)。如果使用 export var=123命令,则set和 env 函数都可以显示 var 变量。


4.shell 是解释型语言

 

 

shell 命令种类:

 

3.变量

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值