变量的定义
1,用户自定义变量
变量名=变量值
应用一个变量时 要加上$符号 例 echo $a
如果要将一个是变量和一个不是变量的一起用时,,又要将他们一起输出,可以使用{}将是变量的括起来 例 echo ${day}morning 就是一起输出
echo $daymorning 如果是这样,计算机就不知道谁才是变量
echo
d
a
y
m
o
r
n
i
n
g
这
样
计
算
机
又
知
道
了
强
引
用
和
弱
引
用
强
‘
’
单
引
号
,
将
单
引
号
里
的
数
全
部
赋
值
,
不
做
改
变
弱
“
”
双
引
号
将
双
引
号
里
又
day morning 这样计算机又知道了 强引用和弱引用 强‘’单引号,将单引号里的数全部赋值,不做改变 弱“”双引号 将双引号里又
daymorning这样计算机又知道了强引用和弱引用强‘’单引号,将单引号里的数全部赋值,不做改变弱“”双引号将双引号里又或其他变量赋值的按
符
号
赋
值
反
撇
号
‘
‘
括
起
来
的
内
容
会
被
当
做
一
个
命
令
来
执
行
和
符号赋值 反撇号 ` ` 括起来的内容会被当做一个命令来执行 和
符号赋值反撇号‘‘括起来的内容会被当做一个命令来执行和( ) 的作用一样,,推荐用
(
)
方
便
区
分
r
e
a
d
可
以
给
多
个
变
量
赋
值
r
e
a
d
a
c
b
−
−
−
−
−
−
−
−
−
−
−
同
时
给
a
c
b
赋
值
r
e
a
d
−
p
−
−
−
可
以
与
用
户
交
互
例
r
e
a
d
−
p
"
p
l
e
a
s
e
i
n
p
u
t
a
n
u
m
b
e
r
:
"
n
u
m
将
数
赋
给
n
u
m
支
持
的
算
术
运
算
符
只
有
+
−
∗
/
将
一
切
看
作
是
字
符
的
变
量
,
没
有
数
值
型
的
变
量
将
一
切
开
成
是
文
本
型
的
数
据
如
果
直
接
输
入
2
+
3
是
肯
定
不
行
的
需
要
用
到
l
e
t
命
令
,
先
赋
值
,
l
e
t
n
u
m
=
() 方便区分 read 可以给多个变量赋值 read a c b-----------同时给a c b 赋值 read -p ---可以与用户交互 例 read -p "please input a number :" num 将数赋给num 支持的算术运算符 只有 + - * / % ** 将一切看作是字符的变量,没有数值型的变量 将一切开成是文本型的数据 如果直接 输入2+3 是肯定不行的 需要用到 let 命令 , 先赋值,let num=
()方便区分read可以给多个变量赋值readacb−−−−−−−−−−−同时给acb赋值read−p−−−可以与用户交互例read−p"pleaseinputanumber:"num将数赋给num支持的算术运算符只有+−∗/将一切看作是字符的变量,没有数值型的变量将一切开成是文本型的数据如果直接输入2+3是肯定不行的需要用到let命令,先赋值,letnum=a+$b echo $num --才可以将数据算出
也可以用 $[ ] 将[]里的表达式当作算术计算 $[
a
+
a+
a+b ] 一定不能在里边直接写数字
[
]
和
[ ]和
[]和(( ))完全等价
加粗样式
2,,环境变量 系统定义好的,执行环境变量要加上echo 加变量
echo $PATH—存放可执行文件的路径
echo $HISTSIZE -----当前用户的历史上限命令条数,,可以更改命令上限的条数
HOME PATH USER UID SHELL HISTSIZE PWD-----这些环境变量和一般的差不多
给PATH 赋环境变量PATH=“ ” 就可以直接将PATH的值给变动
echo
L
A
N
G
显
示
当
前
系
统
语
言
L
A
N
G
=
"
"
可
以
改
变
当
前
的
系
统
语
言
,
只
要
正
确
写
出
语
言
怎
么
写
的
自
定
义
变
量
和
系
统
定
义
的
环
境
变
量
(
环
境
变
量
通
常
使
用
大
写
显
示
)
自
定
义
变
量
,
默
认
情
况
下
只
能
在
当
前
的
s
h
e
l
l
环
境
中
使
用
,
因
此
称
为
局
部
变
量
,
局
部
变
量
是
在
新
开
启
的
s
h
e
l
l
是
无
效
的
例
执
行
b
a
s
h
命
令
就
会
开
启
一
个
子
b
a
s
h
在
上
一
个
b
a
s
h
例
定
义
的
环
境
变
量
在
子
b
a
s
h
里
也
是
起
不
到
作
用
的
环
境
变
量
就
是
到
哪
里
都
可
以
使
用
但
是
自
定
义
环
境
变
量
只
能
在
当
前
的
b
a
s
h
和
子
b
a
s
h
自
定
义
环
境
变
量
e
x
p
o
r
t
环
境
变
量
名
=
“
”
用
e
x
p
o
r
t
来
定
义
环
境
变
量
b
a
s
h
的
配
置
文
件
b
a
s
h
分
俩
类
p
r
o
f
i
l
e
类
配
置
文
件
,
这
类
文
件
旨
在
用
户
登
录
是
执
行
一
次
全
局
的
对
全
部
用
户
都
有
效
/
e
t
c
/
p
r
o
f
i
l
e
/
e
t
c
/
p
r
o
f
i
l
e
.
d
/
在
这
个
目
录
下
的
所
有
以
.
s
h
结
尾
的
,
或
者
自
己
创
建
一
个
,
或
修
改
一
个
,
所
有
的
用
户
登
录
s
h
e
l
l
时
都
会
自
动
执
行
这
个
文
件
局
部
的
只
对
指
定
的
用
户
有
效
在
用
户
的
家
目
录
下
,
每
个
都
会
又
一
个
.
b
a
s
h
p
r
o
f
i
l
e
的
文
件
(
.
是
隐
藏
文
件
)
b
a
s
h
r
c
类
配
置
文
件
,
这
类
文
件
不
仅
在
登
录
是
会
执
行
,
而
且
每
当
用
户
打
开
新
的
s
h
e
l
l
或
者
创
建
新
的
s
h
e
l
l
也
会
被
执
行
,
也
就
是
说
b
a
s
h
r
c
会
被
反
复
执
行
多
次
全
局
的
/
e
t
c
/
b
a
s
h
r
c
局
部
的
.
/
b
a
s
h
r
c
要
想
永
久
使
用
环
境
变
量
就
要
修
改
配
置
文
件
在
p
r
o
f
i
l
e
中
的
配
置
文
件
最
后
加
e
x
p
o
r
t
来
定
义
环
境
变
量
的
命
令
,
,
,
或
是
在
/
e
t
c
/
p
r
o
f
i
l
e
.
d
/
下
加
一
个
以
.
s
h
结
尾
的
文
件
里
边
也
用
e
x
p
o
r
t
来
定
义
环
境
变
量
修
改
完
配
置
文
件
不
能
立
即
生
效
,
可
以
执
行
s
o
u
r
c
e
或
.
加
配
置
文
件
就
可
以
生
效
,
就
跟
配
置
服
务
要
重
启
服
务
一
样
可
以
在
配
置
文
件
里
加
文
件
目
录
,
路
径
等
等
位
置
变
量
就
是
在
脚
本
里
定
义
一
个
数
,
当
执
行
这
个
脚
本
时
,
可
以
在
外
边
进
行
输
出
,
赋
值
,
以
及
其
他
操
作
位
置
变
量
与
s
h
e
l
l
脚
本
程
序
执
行
时
所
用
的
命
令
参
数
相
对
应
,
命
令
行
中
的
参
数
受
照
从
左
到
右
的
顺
序
依
次
给
位
置
变
量
赋
值
,
,
位
置
变
量
的
名
称
是
LANG 显示当前系统语言 LANG=" " 可以改变当前的系统语言,只要正确写出语言怎么写的 自定义变量 和 系统定义的环境变量(环境变量通常使用大写显示) 自定义变量 ,默认情况下只能在当前的shell环境中使用,因此称为局部变量,局部变量是在新开启的shell是无效的 例 执行bash命令 就会开启一个子bash 在上一个bash例定义的环境变量在子bash里也是起不到作用的 环境变量就是到哪里都可以使用 但是自定义环境变量只能在当前的bash和子bash 自定义环境变量 export 环境变量名=“ ” 用export来定义环境变量 bash的配置文件 bash分俩类 profile类配置文件,这类文件旨在用户登录是执行一次 全局的对全部用户都有效 /etc/profile /etc/profile.d/在这个目录下的所有以 .sh结尾的,或者自己创建一个,或修改一个,所有的用户登录shell 时都会自动执行这个文件 局部的只对指定的用户有效 在用户的家目录下,每个都会又一个 .bash_profile的文件( . 是隐藏文件) bashrc 类配置文件,这类文件不仅在登录是会执行,而且每当用户打开新的shell或者创 建新的shell也会被执行,也就是说bashrc 会被反复执行多次 全局的 /etc/bashrc 局部的 ./bashrc 要想永久使用环境变量 就要修改配置文件 在profile中的配置文件最后加 export 来定义环境变量 的命令 ,,,或是在/etc/profile.d/下加一个以 .sh 结尾的文件里边也用export来定义环境变量 修改完配置文件不能立即生效,可以执行 source 或 . 加配置文件就可以生效,就跟配置服务要重启服务一样 可以在配置文件里加文件目录,路径等等 位置变量 就是在脚本里定义一个数,当执行这个脚本时,可以在外边进行输出,赋值,以及其他操作 位置变量与shell脚本程序执行时所用的命令参数相对应,命令行中的参数受照从左到右的顺序依次给位置变量赋值,,位置变量的名称是
LANG显示当前系统语言LANG=""可以改变当前的系统语言,只要正确写出语言怎么写的自定义变量和系统定义的环境变量(环境变量通常使用大写显示)自定义变量,默认情况下只能在当前的shell环境中使用,因此称为局部变量,局部变量是在新开启的shell是无效的例执行bash命令就会开启一个子bash在上一个bash例定义的环境变量在子bash里也是起不到作用的环境变量就是到哪里都可以使用但是自定义环境变量只能在当前的bash和子bash自定义环境变量export环境变量名=“”用export来定义环境变量bash的配置文件bash分俩类profile类配置文件,这类文件旨在用户登录是执行一次全局的对全部用户都有效/etc/profile/etc/profile.d/在这个目录下的所有以.sh结尾的,或者自己创建一个,或修改一个,所有的用户登录shell时都会自动执行这个文件局部的只对指定的用户有效在用户的家目录下,每个都会又一个.bashprofile的文件(.是隐藏文件)bashrc类配置文件,这类文件不仅在登录是会执行,而且每当用户打开新的shell或者创建新的shell也会被执行,也就是说bashrc会被反复执行多次全局的/etc/bashrc局部的./bashrc要想永久使用环境变量就要修改配置文件在profile中的配置文件最后加export来定义环境变量的命令,,,或是在/etc/profile.d/下加一个以.sh结尾的文件里边也用export来定义环境变量修改完配置文件不能立即生效,可以执行source或.加配置文件就可以生效,就跟配置服务要重启服务一样可以在配置文件里加文件目录,路径等等位置变量就是在脚本里定义一个数,当执行这个脚本时,可以在外边进行输出,赋值,以及其他操作位置变量与shell脚本程序执行时所用的命令参数相对应,命令行中的参数受照从左到右的顺序依次给位置变量赋值,,位置变量的名称是n 其中n 是参数的位置序号,从1开始,最多是9 例如$1
$2
3
分
别
代
表
了
命
令
的
1
,
2
,
3
个
参
数
,
脚
本
里
的
怎
么
做
,
就
影
响
了
后
面
输
出
的
参
数
怎
么
做
,
脚
本
里
有
多
少
个
参
数
,
最
好
传
多
少
个
参
数
,
因
为
如
果
你
传
多
了
,
也
没
有
位
置
来
存
放
,
也
不
能
继
续
算
(
而
且
上
限
是
9
)
如
果
没
有
传
参
数
的
,
那
就
是
默
认
什
么
都
没
有
预
定
义
变
量
预
定
义
变
量
是
s
h
e
l
l
中
预
先
定
义
好
的
一
些
特
殊
变
量
,
用
户
只
能
使
用
预
定
义
变
量
,
而
自
己
不
能
自
己
创
建
新
建
的
预
定
义
变
量
,
也
不
能
直
接
作
为
预
定
义
变
量
赋
值
所
有
的
预
定
义
变
量
都
是
由
3 分别代表了命令的1,2,3个参数,脚本里的怎么做,就影响了后面输出的参数怎么做,脚本里有多少个参数,最好传多少个参数,因为如果你传多了,也没有位置来存放,也不能继续算(而且上限是9)如果没有传参数的,那就是默认什么都没有 预定义变量 预定义变量是shell中预先定义好的一些特殊变量,用户只能使用预定义变量,而自己不能自己创建新建的预定义变量,也不能直接作为预定义变量赋值 所有的预定义变量都是由
3分别代表了命令的1,2,3个参数,脚本里的怎么做,就影响了后面输出的参数怎么做,脚本里有多少个参数,最好传多少个参数,因为如果你传多了,也没有位置来存放,也不能继续算(而且上限是9)如果没有传参数的,那就是默认什么都没有预定义变量预定义变量是shell中预先定义好的一些特殊变量,用户只能使用预定义变量,而自己不能自己创建新建的预定义变量,也不能直接作为预定义变量赋值所有的预定义变量都是由和另一个符号组成
?
用
于
检
查
上
一
条
命
令
执
行
状
态
,
如
果
上
一
条
正
确
执
行
了
,
那
么
?用于检查上一条命令执行状态,如果上一条正确执行了,那么
?用于检查上一条命令执行状态,如果上一条正确执行了,那么?的值是为0.非0为错误(1到255)
$#表示命令行中位置参数的数量
$0表示当前脚本的名称
Linux变量的定义
最新推荐文章于 2024-05-04 01:13:37 发布