shell变量
来源:互联网 发布:笔筒淘宝 编辑:程序博客网 时间:2024/06/14 22:41
自定义变量:
方法一: 定义一个变量赋值
[root@centos6 ~]Name = tomcat
[root@centos6 ~]echo $Name
tomcat
[root@centos6 ~]typeset -r NAME #设置变量Name为只读属性来防止误操作
[root@centos6 ~]NAME=jerry
bash: NAME: readonly variable
shell 变量是无类型的
方法二: 定义一个变量不赋值
[root@centos6 ~]declare Number
[root@centos6 ~]typeset -i Number #使用-i选项设置整数变量,若是把字符型数据强制设给该变量,则结果为0
方法三: 通过read命令来设置变量,read从标准输入中读取变量值,使用-P选项添加提示信息
[root@centos6 ~]read Value #回车后输入变量值
22
[root@centos6 ~]read -P “Please input a number:” Values
Please input a number:100 #在提示符后输入要赋值给变量的值
[root@centos6 ~]echo $Values
100
Set:
[root@centos6 ~]set #查看当前系统中设置的所有变量及值
[root@centos6 ~]unset Values #删除变量
环境变量:
可以先定义一个变量,再通过export转换为坏境变量
[root@centos6 ~]TEST=pass
[root@centos6 ~]export TEST
也可以直接定义坏境变量并赋值
export NAME = TOM
Bash预设了很多的坏境变量,下面是比较常用变量名称及其含义:
BASHPID 当前bash进程的进程号
GROUPS 当前用户所属组的组ID号
UID 当前用户的ID号码
HISTSIZE 命令历史的记录条数
HOSTNAME 当前主机的主机名称
HOME 当前用户的家目录
PWD 当前工作目录
PATH 命令搜索路径
OLDPWD 前一个工作目录
PS1 主命令提示符
PS2 次命令提示符
RANDOM 0~32767之间的随机数
PATH讲解:
系统是如何知道某一个命令存放在哪里,其实Linux系统是通过PATH变量来搜索命令的,PATH变量的值就是一个目录集合
系统一直会按照循序执行下去
修改PATH路径要注意,不可以直接对其赋新值,否则将覆盖PATH现有的值
echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin/usr/sbin:/usr/bin:/root/bin
PATH=/root 不能直接赋值,否则会把原有值都覆盖掉
由于这只是当前生效,所以只要推出命令行重新登录终端PATH变量将复原即可
PATH变量修改正确方法:是在原来基础上修改,所以在赋值时需要引用旧值,想永久保持修改,写在/etc/profile
PATH=$PATH:/root 在原有路径列表后追加目录
位置变量
位置变量的使用一般体现在脚本中
$0 代表当前Shell程序文件名称
$1 代表运行Shell程雪时的第一个参数
$2 为第二个参数(一次类推从$1~$9)
$# 代表Shell程序所有参数的个数
$*与@ 均代表所有参数的内容,区别是$*将所有的参数作为一个整体,而$@将所有的参数分别作为个体看待
$$ 代表当前进程的ID号
$? 表示程序的退出代码(一般0代表执行成功,非0代表执行失败)
[root@centos6 ~] cat /tmp/test.sh
echo "this is the file name:$0"
echo " this is first parameter:$1 "
echo "this is first parameter:$2 "
echo "this is the number of all parameter:$# "
echo "this is the number of all parameter:$* "
echo "this is the number of all parameter:$@ "
echo "this is PID: $$"
[root@centos6 ~] bash /tmp/test.sh a b c
变量的展开替换:
Linux中一般可以使用${变量名}的形式展开变量的值
判断变量存在性:
${varname-word} 检查前面的值,前面有就不读取后面,前面没有就读取后面
${varname:-word} 如varname存在且非null,则返回其值,否则返回word
${varname:=word} 如varname存在且非null,则返回其值,否则设置为word
${varname:?message} 如varname存在且非null,则返回其值,否则显示Varname:message
${varname:+word} 如varname存在且非null,则返回其值,否则返回null
截取变量长度:
${variable#key} 从头开始删除关键词,执行最短匹配
${variable##key} 从头开始删除关键词,执行最长匹配
${variable%key} 从尾开始删除关键词,执行最短匹配
${variable%%key} 从尾开始删除关键词,执行最长匹配
${variable/old/new} 将old替换为new,仅替换第一个出现的old
${variable//old/new} 将old替换为new,替换所有old
${variable:7} 去掉变量前N个字符
${variable:7:2}去掉变量前面N个字符,同时只显示我规定的长度
查询变量值长度:
${#变量} 查看变量字符长度
搜索某一个开头的变量:
${!aa@} 搜索aa开头的所有变量
数组
Bash提供了数组变量功能,数组中所有变量都会编录成索引,数组索引是以0开始的整数
两种方式创建数组变量
使用declare -a name 可以预定义一个空数组变量
1. A[1] = 11 A[2]=22
2. B[aa bbb ccc ]
使用A[*]或A[@]来调用所有数组成员
[root@centos6 ~] echo ${A[*]}
aa bb cc
[root@centos6 ~] echo ${A[@]}
aa bb cc
使用${#name[subscript]} 可以返回${name[subscript]}的长度,如果subscript是*或@,则返回数组中元素的个数
[root@centos6 ~] echo ${ B[0]} : ${B[1]} : ${B[2]}
aa:bbb:ccc
[root@centos6 ~] echo "length of B_0 is ${#B[0]}"
length of B_0 is 2
[root@centos6 ~] echo ${#B[@]}
3
- Shell变量
- Shell变量
- shell 变量
- Shell 变量
- Shell变量
- shell变量
- shell变量
- shell 变量
- Shell ”变量“
- Shell变量
- SHELL 变量
- shell变量
- shell变量 ***
- shell变量
- shell 变量
- 【shell】变量
- shell 变量
- shell变量
- Android RecycleView汇总
- springmvc web.xml 配置默认的controller访问问题
- listview 刷新某一个item
- js中取得变量绝对值的方法
- 滴滴出行(滴滴打车)太耗电太占内存cpu问题之终极解决
- shell变量
- Tomcat
- 手把手教你写框架之ShykyAnnotations - 注解
- 牛客网算法学习记录-排序2
- 2.1 JobScheduler, Job, JobSet 详解
- msp430单片机实现常按键和短按键加去抖功能
- fedora23 安装openssh-server
- 巩固缓存相关,深入解析imageLoader
- JAVA