shell介绍
shell是一个编程语言解释器,这个解释器解释从键盘输入的命令,也解释存储在脚本中的命令序列,shell脚本是一个包含一系列命令的文件,运行一个脚本就是运行这个文件中的每个命令。可以用一个shell脚本在一次请求中来执行多个命令。shell脚本的执行:shell解释程序会fork+exec执行这个脚本命令,在exec调用中,内核会检查脚本的第一行(如:#!/bin/bash)找到来执行脚本的解释程序,然后装入这个解释程序,由它来解释执行脚本
shell的执行
可以直接chmod +x shell.sh 加入执行命令 ./shell.sh 运行 ,也可以直接bash shell.sh 执行 bash -x 可以看到执行的详细,bash -n shell.sh 可以检查语法错误,拼写错误不会提示。
shell的变量
shell的变量有:可变化的量,命名内存空间
bash环境变量有如下:
本地变量:当前shell进程;
环境变量:当前shell进程及其子进程;
局部变量:某个函数执行过程;
位置参数变量:在脚本中引用传递给脚本的参数;在函数中引用传递给函数的参数;
特殊变量:$?, $*, $@, $#, $$
本地变量定义:
name=value // name: 变量名 =:赋值符号 =:赋值符号 value:值
变量名:只能包含数字、字母和下划线;且不能以数字开头;
引用变量:${name}, $name // 本地变量定义与使用,只对当前shell生效,注销重新登录就失效,在子进程时之前定义的shell也会失效
脚本里面引用:弱引用: "", 其内部的变量引用会被替换为变量值;强引用:'',其变量的变量引用会保持原有字符;命令引用:`COMMAND`, $(COMMAND),引用命令的执行结果;
声明为整型:declare -i name[=value] 或者 let name=value
变量的失效或者取消:脚本执行完成自动销毁:shell进程终止;手动销毁:unset name
[root@localhost bin]# tao="shaonian.blog.51cto.com" [root@localhost bin]# echo $tao // 声明变量tao shaonian.blog.51cto.com [root@localhost bin]# bash [root@localhost bin]# echo $tao //子进程失效 [root@localhost bin]# set //查看变量 BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
环境变量定义:
有点像被“导出”的本地变量
export name[=value]
declare -x name[=value]
查看所有环境变量:env, printenv, expor
局部变量:某个shell脚本执行过程;只在shell脚本执行过程中生效,之后再调用失效。
特殊变量:$?, $*, $@, $#, $$