Shell编程学习(1)----shell和shell中的变量
2017-12-07 21:57
369 查看
1.什么是shell?
Shell:
位于内核的上层,是上层用户或程序与内核交互的接口程序。
Shell的功能:
1.接受用户输入的命令,将命令解释成内核认识的形式交给它执行,最后再将内核的执行结果解析成用户可以理解的相识反馈给用户。
2.解释性的编程语言,可以编写Shell程序,如同c语言编写程序一样。
3.不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等
2、 第一个简单的脚本
查看一个最简单的脚本:cat scp1#!/bin/bash who date
解释一下这段最简单的脚本:
#!/bin/bash代表的是这段脚本的解释器,就是下面的语句要由这个解释器去执行
who命令:查看哪个终端
date命令:打印当前的日期
执行bash脚本的命令:
/bin/bash scp1
首先赋予用户执行这段脚本的权利:chmod u+x scp1 。 其次用./命令来执行脚本: ./scp1
注意:第二种执行方式要注意,必须在脚本所在目录下才能./scp1,举个例子:如果脚本scp1在当前目录下的一个jiaoben目录下,那么你就要用./jiaoben/scp1命令。
3、shell中的变量
bash与其他程序设计语言一样也采用变量来存放数据,使用变量之前通常并不需要事先为它们做出声明。 默认情况下,所有变量都被看作字符串并以字符串来存储,即使它们被赋值为数值时也是如此。 shell和一些工具程序会在需要时把数值型字符串转换为对应的数值以对它们进行操作
shell中的变量分为两类:
1. 环境变量
2. 用户自定义变量
看一下什么叫做环境变量?
环境变量简单一点说就是一些在整个主机的shell环境中都有效的变量,无论你切换到哪个shell,都可以去用这些环境变量,再比如有一个环境变量stuname=”jin” ,我们可以在脚本中直接去使用这个stuname变量,这就是环境变量的作用范围。
我们可以用env命令来查看环境变量。
看一下比较重要的环境变量:
PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 前用户Shell类型 LANGUGE 语言相关的环境变量,多语言可以修改此环境变量 MAIL 当前用户的邮件存放目录 PS1 基本提示符,对于root用户是#,对于普通用户是$ PS2 附属提示符,默认是“>”
什么是用户自定义变量?
<1>其实就是用户自己定义的变量,例如:temp=abc <2>temp变量只在当前shell下使用 <3>用户自定义变量又可以分为全局变量和局部变量
自定义变量的一些用法:
1、变量的声明用法:
1.declare [option] [name]=[value] -a 声明“name”是一个数组 -f 声明“name”是一个函数 -i 声明“name”是一个整数 -r 声明“name”是只读的变量 -x 表示每一个“name”变量都可以被子进程访问到,称为全局变量 例子: [root@localhost root]# declare –i age=20 [root@localhost root]# declare –rx OS=LINUX [root@localhost root]# declare –i 显示所有整型变量; [root@localhost root]# declare –x 显示所有全局变量;
2.变量的赋值
格式:变量名=值 注意:必须保证等号(=)前后没有空格。 例: x=6 a="hello world"
3.变量引用
在shell中,可以通过在变量名前加一个$符号来访问它的内容。如: a="hello world" echo "A is: $a" 一个变量给另一个变量赋值可以写成: 变量2=$变量1 例如:x=$i
4.单引号、双引号和反斜杠的使用
使用双引号可引用除字符$、`、\外的任意字符或字符串。对大多数的元字符(包括*)都将按字面意思处理。如果用双引号(“”)将值括起来,则允许使用$符对变量进行替换。字符串通常都被放在双引号中,以防止它们被空白字符分开。 如果用单引号‘’将值括起来,则不允许有变量替换,而不对它做shell解释。 反斜杠(\)用来去除某些字符的特殊含义并把它们按字面意思处理,其中就包括$。 例子: [root@localhost root]# BOOK=”linux book” [root@localhost root]# echo ’$BOOK’ $BOOK [root@localhost root]# msg=’ my name is ’ [root@localhost root]# echo $msg my name is [root@localhost root]# echo “$msg Linux” my name is Linux [root@localhost root]# echo \$msg $msg
相关文章推荐
- RHCE课程-RH033Linux基础笔记四之shell以及环境变量
- Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
- shell变量
- shell中的环境变量
- shell脚本判断变量文件目录的写法
- Linux-shell学习笔记--环境变量
- shell浅谈之一变量和引用
- [Linux]shell 变量$*, $#, $?, $!, $1,$2,..., $n的含义
- 【shell】变量
- Shell入门教程:Shell当中的特殊变量
- 2018-1-11 5周4次课 管道符、作业控制、shell变量、环境变量配置
- 从Export理解Shell环境和变量生存期
- Linux下的环境变量原理与shell
- sed和awk中使用shell变量
- shell脚本 - 学习if语句和变量赋值
- shell中变量自增的实现方法
- 从学习export命令理解到的Shell环境和变量生存期
- shell变量详解
- python 调用 shell python shell 间变量传递
- SHELL中的特殊变量和结构