Linux中的变量, locale, read, declare,ulimit

echo, 设置变量, 取消变量

  • 可以通过echo $var 的方式打印变量, 若系统中没有变量, 则不会打印任何东西
  • 变量可以直接设置. 假设要设置myName的变量, 则可以这样写:
myName=Helloyong

myName就是新设置的变量, 其变量内容是Helloyong.

  • 可以使用unset 命令取消变量.

取消myName的变量:

unset myName

变量的设置规则

  • 变量和变量内容之间以等号链接, 且等号两边没有空格
  • 变量名是不以数字开头的英文或者数字.
  • 变量内容中的特殊字符, 若在单引号之间则为一般字符, 若在双引号之间则保持原有特性.
  • 可以使用转义字符()对特殊符号进行转义.
  • 使用反引号和$(cmd)可以执行命令.

环境变量

在终端使用env命令查看环境变量, envenvironment的缩写. 使用set命令查看所有变量(包括自定义变量)

常见的变量有HOME,PATH,LANG等.

语系变量locale

使用locale可用来查询本机Linux支持的所有语系。加上参数a即可。

yw@yw-PC:~$ locale -a
C
C.UTF-8
en_US.utf8
POSIX
zh_CN.utf8

如果不加参数a, 可以查看设置

yw@yw-PC:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

当设置LANG或者LC_ALL时, 系统默认将其它未设置的语系变量被LANG或LC_ALL替代.

Linux中的语系文件放置在/usr/lib/locale目录中.

整体系统默认的语系定义在/etc/sysconfig/i18n中, 可以在这个文件修改你想要的语系.

变量键盘读取, 数组与声明, read, array, declare

read

使用read 可以读取用户的输入, 用法

read var 

在命令行打入这个命令并回车后, 输入字符串, 这个字符串存储于var 这个变量中.
read 还有两个参数可以使用.
p: 后面可以接提示符
t: 等待用户输入的时间, 秒为单位
例如, 让用户在30s内输入一个名字:

yw@yw-PC:~$ read -p "Please input a name: " -t 30 name
Please input a name: Join

之后执行echo $name 这个命令会打印出Join

注意: 当我们退出当前的命令行时, name变量就会销毁.
在使用read时, 会进入子进程, 变量也就是定义在子进程中的. 当退出bash时, 子进程消失. 子进程中的变量也随之销毁. 如果想要称为全局变量, 则可以使用export命令.

declare/typeset

declare和typeset 的功能一样, 都是声明变量的类型. 系统默认声明的变量时字符串类型. 我们以declare为例. 用法如下:

declare var # 声明变量var

有以下参数设置变量的类型.
a: 将变量var设置为array类型
i: var为integer类型
x: var为环境变量(全局变量)
r: 只读类型, 不可更改也不可重设.

限制用户行为, ulimit

ulimit用于限制用户的行为, 用法如下:

ulimit [-SHacdfltu] <配额>

参数分别代表不同的属性, 配额就是属性值.
如, t表示使用cpu的最长时间(秒), 设置其为30s:

ulimit -t 30

其他参数含义如下:
S: 警告设置, 超过此值会有警告信息
H: 严格设置, 不能超过此值
a: 列出所有设置及其值
f: 此shell可以创建的最大文件容量, 单位KB
d: 进程可以使用的最大断裂内存容量
l: 可用于锁定的内存量
u: 单一用户可以使用的最大进程数量

变量的删除, 替换

假设有变量var1, 如果想把var1的内容赋值给var2, 那么我们可以这样做:

var2=${var1}

再使用echo $var2命令会发现内容和var1的内容一样.
假如没有变量var1, 那么var2就不会被设置. 如果我们想这样做呢? 当设置了var1时, 就将var1的内容给var2, 如果没有设置var1, 则个var2一个默认值. 可以使用减号-. 形如var2=${var1-content}

var2=${var1-"var2"}

此时, 当var1没有设置时, var2的值就是”var2”. 这会有一个小bug, 当我们的var1为空字符串时"", 我们再执行上面的命令, var2的值也就是空字符串. 这并不是我们想要的. 如果我们想在var1为空时也将后面跟的内容赋值给var2, 可以在减号前面加上一个冒号:

var1=""
var2=${var1:-"var2"}

此时, var2的值为”var2”.
在var1和content之间还可以有其他符号, 如下表: (来源于鸟哥的linux私房菜)
变量删除替换表

变量内容的删除与替换

注意这个是变量内容的删除与替换.

变量内容的删除与替换使用如下语法: (来源于 鸟哥的linux私房菜)
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值