shell变量定义

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

shell变量定义

一,变量:

可变化的量,有名称的内存空间(在内存中要占据空间)

声明变量的目的是:让计算机留出内存空间来储存某一个确定类型的数据

二,bash中变量的类型

(1)环境变量:对当前shell及其子shell都是生效的,declare -x var=value or export var=value

显示当前环境变量,export or printenv or env

(2)本地变量(局部变量):仅对当前shell有效,对子shell无效。

(3)特殊变量:通常指shell自身的变量

(4) $?:引用上一条命令状态的返回值;

0:成功

1-255:失败1,2,127系统预留的

(5),位置变量:用于引用传递过来的参数: $0, $1 ,$2 ....${11}

(6),局部变量:作用范围可以缩小到只对一段代码有效)

local name (定义成只对一段代码有效)

命令别名:alias cmd_alias= ''(有些时候要带,没-,/之类就不用带'') , unlias

三,系统上常用的环境变量

(1)PATH:定义命令搜索路径

/usr/local/mysql/bin

export PATH=$PATH:/usr/local/mysql/bin(在原来PATH变量中添加/usr/local/mysql/bin,当运行mysql命令就不需要使用绝对路径)

hash 系统加速的缓存(shell内置变量)命令执行完会在hash中

(2) LANG:语言变量

/etc/sysconfig/i18n

语言:编码规则

DISPLAY=

screen

每个变量的生命的周期其关联进程,shell进程

(3) PS1

export 或declare -x 声明环境变量,

改变全局在/etc/profile,改变用户在~/.bashrc

立即生效与永久生效(写入配置文件才能永久生效)

(4) bash环境配置文件:

全局:

/etc/profile,/etc/profile.d/* ,/etc/bashrc

用户个人:

~/.bash_profile,~/.bashrc,~/.bash_logout

每一个shell脚本的执行,必然是使用对应的shell程序来实现

/bin/bash, /tmp/test.sh

登录式shell:(先读/etc/profile-->/etc/profile.d/*-->~/.bash_profile--->~/.bashrc-->/etc/bashrc)

1,用户登录最后创建的shell

2, su - username

非登录式的shell:(~/.bashrc-->/etc/bashrc--->/etc/profile.d/*)

su username

脚本执行

图形界面打开的shell

profile类:为登录式shell所用的配置文件(source=.)

设置环境变量;

设置命令或脚本

bashrc类,非登录式shell所用的配置文件

本地变量;

命令别名:

()表示在子shell中执行,()里的内容表示命令

管道的最后一个命令通常也在最后一个子shell执行


四,在bash中不需要事先声明,如果没声明则默认都当成字符串,但是可以事先声明,

变量的事先声明:

(1)declace [ options ] var

-i :整型

-x :环境变量

-a :数组

-r :只读变量,值不能改变,也不能撤消

(2)变量命名:

1,只能包含字母,数字,下划线,并且不能以数字开头;

2,不能与关键字冲突

3,见名知义

4,引号:

单引号:''

双引号:"" 变量替换

反引号:`` 命令替换(把命令执行结果当作别的命令的参数) =$()

5,变量引用:

$var

${var} :如果变量值中有特殊字符或带后缀时不能省略{}

path="$PATH"与path=${PATH}与path=$PATH(这种方式少用,因为有时$PATH中含有特殊字符时会出现问题,如含有空格之类的时候)

三种方式效果是一样的。都是定义path的变量等于PATH的变量

引用命令的结果两种方式:

(1)MYUID=$(id -u root)

(2)MYUDI=`id -u root`

五,变量赋值

set var_name=value (set 可以省略)

DIR=/tmp/name

DIR='/tmp/name'(一般情况都可以用,但是有空格之类的特殊符号时,刚必须加''或"")

DIR="/tmp/name"(如果/tmp/name中有$则不能使用'')

unset var_name(撤销变量) 变量名最好有大写,习惯性用法,当然不一定要

六:变量类型

1,决定存储类型 2,数据表示范围

整型:

字符型:

布尔型:

浮点型:

ascii:定义了基本字符,

byte:8bit

七,bash如何实现命令展开;

(1)切开;以space,tab,enter分隔

(2)别名替换,命令行展开,$ ,{} ,()

(3)再切开

(4)实现重定向:>,>> ,< ,<<

(5)执行命令

阻止展开:1,转义字符\,2,单引号,3 ,双引号

八,位置变量

./a.sh a b c

$0 $1 $2 $3

bash -x 与set -x(写在脚本里)调试脚本

set +x 取消调试,set -x 与set +x之间会调试(调试片段)

$#:代表接不接参数的个数,上面表示有四个

$@:代表”$1" "$2" "$3" "$4",每个变量是独立的(用双引号括起来)

$*:代表"$1 $2 $3 $4" 中间默认用空格键隔开,因IFS默认的第一个变量是空格

变量赋值等号与let (a=1 与let a=1效果一样,赋值数值,不用加引号)

name="mary smith"(引号的目的是告诉计算机从哪开始到哪结束,引号中间的字符就会被当作字符串处理

如果是只有单个时,可以不用引号name=mary,赋值字符串,最好加引号)

九,脚本的函数

功能模块,结构化编程,代码重用

先定义后调用

14,bash中定义被函数两种方式:

(1)function func_name {

body

}

(2)fname () {

body

}

函数的返回值:

是函数调用时所执行的函数体中的最后一条语句的状态返回值

自定义函数返回值

return #

函数还能接受参数

/var/lock/subsys

/etc/rc.d/init.d/functions 定义了系统上常用的函数

(1)daemon

(2)killproc

(3)pidofproc

(4)status

(5)echo

echo_failure

${para#*word} 以word为分隔符,自左向向,word这个分隔去匹配,找到第一次匹配到的所有内容先移出

${para##*word} 。。。。。。。。。。。。.................,找到最后一次,也就是最长的一个给移出

${para%word*}................ 自右向左

${para%%word*} 自右向左

取得目录路径的时候可以用上










本文转自 deng304749970 51CTO博客,原文链接:http://blog.51cto.com/damondeng/1312876,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
44 0
|
24天前
|
存储 算法 Shell
【Shell 命令集合 设备管理 】Linux 显示当前系统中定义的键盘映射表 dumpkeys命令 使用指南
【Shell 命令集合 设备管理 】Linux 显示当前系统中定义的键盘映射表 dumpkeys命令 使用指南
31 0
|
13天前
|
人工智能 机器人 Shell
【shell】shell数组的操作(定义、索引、长度、获取、删除、修改、拼接)
【shell】shell数组的操作(定义、索引、长度、获取、删除、修改、拼接)
|
24天前
|
存储 Shell Linux
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
27 0
|
2月前
|
Shell
shell系统给定变量大全——及使用方法
shell系统给定变量大全——及使用方法
22 0
|
2月前
|
存储 Shell Linux
Linux的shell命令——变量用法
Linux的shell命令——变量用法
31 0
|
2月前
|
存储 Shell
Shell变量和参数
Shell变量和参数
16 3
|
2月前
|
存储 Shell Linux
【Shell】环境变量 自定义变量 特殊变量
【Shell】环境变量 自定义变量 特殊变量
119 0
|
3月前
|
机器学习/深度学习 大数据 Shell
Shell基础学习---1、Shell概述、脚本入门、变量
大数据学习 Shell基础学习---1、Shell概述、脚本入门、变量
49 1
|
3月前
|
Shell Linux
Shell编程自动化之特殊Shell扩展变量
本文主要介绍了Shell编程自动化之特殊Shell扩展变量,并结合实例测试。
104 0