二:shell之bash变量
1.变量的分类;
用户自定义变量: 变量自定义 默认存储是字符串
环境变量: 这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
位置参数变量: 这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
预定义变量: 是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
2.用户自定义变量
1.定义变量
格式:变量名称=变量值(=左右不能加空格)
例如:
x=5 就定义了一个叫 x 的变量
注意 5 是字符,不是数字,不能加减乘除。
name="hello world"
2.变量调用
在变量名之前加一个 $表示变量的值
例如:输出变量的值
echo $x
echo $name
3.变量叠加
x=123
x="$x"456 或 x=${x}456
4.变量查看
set 会显示当前系统中所有运行的变量
set -u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
5.删除变量
unset 变量名
例如:unset name
3.bash环境变量
1.环境变量与用户自定义变量的区别
环境变量是全局变量,用户自定义变量是局部变量。
用户自定义变量只在当前的 shell 中生效,环境变量在当前 shell 和这个 shell 的所有子 shell 中生效。
用户可以自定义环境变量,但对系统生效的环境变量名和变量作用是固定的。
2.用户自定义环境变量
export 变量名=变量值
或
变量名=变量值
export 变量名
3.查看环境变量
set 查看所有变量
env 查看环境变量
4.删除环境变量
unset 环境名
5.常用的环境变量
HOSTNAME:主机名
SHELL:当前的 shell
TERM:终端环境
HISTSIZE:历史命令条数
SSH_CLIENT:当前操作环境是用 ssh 连接的,这里记录客户端 ip
SSH_TTY:ssh 连接的终端是 pts/1
USER:当前登录的用户
PATH:系统搜索命令的路径
要想直接通过脚本名执行自己的脚本:
(1)将脚本拷贝至 PATH 中的任意目录下(不建议这样做),例如:
cp hello.sh /bin/
(2)将脚本所在目录添加到 PATH 变量中,例如:
PATH="$PATH":/root/sh 但系统重启后失效(用的是变量叠加)
PS1:命令提示符设置
\d:显示日期,格式为"星期 月 日"
\H:显示完整的主机名
\t:显示 24 小时制时间,格式为"HH:MM:SS"
\A:显示 24 小时制时间,格式为"HH:MM"
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\$:提示符。root 用户为"#",普通用户为"$"
6:语系变量
环境变量中的语系变量
locale #查询当前系统语系
LANG #定义系统主语系的变量
LC_ALL #定义整体语系的变量
echo $LANG #查看系统当前语系
locale -a | more
#查看Linux支持的所有语系
查看默认语系
cat /etc/sysconfig/i18n
显示:
LANG="zh_CN.UTF-8"
#表示开机默认就是中文语系UTF-8编码
4.位置参数变量
1.位置参数变量
$n:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10}。
$*:这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体。
$@:这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待。
$#:这个变量代表命令行中所有参数的个数。
2.例子1:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
#变量 sum 的和是 num1 加 num2
echo $sum
#打印变量 sum 的值
执行脚本:
./test.sh 45 76
3.例子2
#!/bin/bash
echo "A total of $# parameters"
#使用 $# 代表所有参数的个数
echo "The parameters is:$*"
#使用 $* 代表所有的参数
echo "The parameters is:$@"
#使用 $@ 代表所有的参数
执行脚本:
./test.sh 11 22 33 44
4.例子3:$* 与 $@ 的区别
#!/bin/bash
for i in "$*"
# $* 中所有参数看成是一个整体,所以这个 for 循环只会循环一次
do
echo "The parameters is:$i"
done
for y in "$@"
# $@ 中每个参数都看成是独立的,所以 $@ 中有几个参数,就会循环几次
do
echo "Parameter:$y"
done
5.预定义变量
预定义变量:
1.$?:最后一次执行的命令的返回状态。
如果这个变量的值为0,证明上一个命令正确执行;
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
2.$$:当前进程的进程号(PID)。
3.$!:后台最后一个运行的进程的进程号(PID)。
接收键盘输入:
read [选项] [变量名]
选项:
-p "提示信息":在等待read输入时,输出提示信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行
-s:隐藏输入的数据,适用于机密信息的输入
read.sh:
#!/bin/bash
read -p "please input your name:" -t 30 name
echo $name
read -p "please input your passwd:" -s passwd
echo -e "\n"
echo $passwd
read -p "please input your sex [M/F]:" sex
echo -e "\n"
echo $sex
二:shell之bash变量的更多相关文章
- Shell基础-Bash变量-用户自定义变量
变量设置规则: 变量名称可以由字母.下划线和数字组成,但是不能由数字开头. 在Bash中变量的默认类型是字符串类型,若需要进行数值运算,则需指定变量类型为数值型.变量用等号链接,且两边不能有空格.若需 ...
- linux笔记:shell基础-bash变量
shell变量设置规则: 变量的分类: 环境变量的设置: 系统常见环境变量: 位置参数变量(用来接收脚本的参数): 预定义变量: 接收键盘输入(将键盘输入的值赋值给变量名): 用declare声明变量 ...
- Linux学习 -- Shell基础 -- Bash变量
变量 默认是字符串型,数值型需要显示指定 等号两侧都不能有空格 单引号:原始字符串 双引号:保留转义 命令结果作为值:反引号 或 $() 环境变量一般用大写 自定义变量 变量定义 name=& ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
- linux学习18 shell脚本基础-bash变量和逻辑运行
一.回顾 1.用户管理,权限管理,install,mktemp 2.用户管理: 3.权限管理: mode,ownership mode: user group other r w x 4.命令:ins ...
- shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)
如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...
- shell编程之BASH变量(2)
变量命名规范 在bash中,变量的默认类型都是字符串型,定义 name = 'kk' 变量分类 用户自定义变量.变量自定义的 环境变量:这种变量中主要保存的是和系统操作环境相关的数据.变量可以自定义, ...
- [Shell]Bash变量:数值运算及运算符
------------------------------------------------------------------------------------------------- Sh ...
- 你可能不知道的shell、bash二三事(Centos 7)
个人.bashrc: ~/.bashrc: # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp ...
随机推荐
- Foreach原理
本质:实现了一个IEnumerable接口, 01.为什么数组和集合可以使用foreach遍历? 解析:因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerato ...
- SWFObject Flash 增强插件
SWFObject 2提供两种优化flash播放器的嵌入方法:基于标记的方法和依赖于js的方法. SWFObject 2提供一个js的API,为嵌入SWF文件和获取Flash播放器的相关信息提供了一个 ...
- jQuery Countdown Timer 倒计时效果
这个一款简单的 jQuery 倒计时插件,用于显示剩余的天数,小时,分钟和秒.倒计时功能是非常有用的一个小功能,可以告诉用户多久以后您的网站将会发布或者关闭进行维护,还可以用于举办活动的开始和停止的倒 ...
- Treed – 基于拖放 操作的,强大的树形编辑器
Treed 是一个功能强大的树型编辑组件.Treed 使用 MVC 模式,简单的构造可以帮助你轻松创建一个完全不同的树形视图.您也可以创建自己的“节点”类,如果你想要做的不仅仅是单一的文本输入. 您可 ...
- Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...
- 向ArcGIS的ToolBarControl中添加任意的windows控件的方法
概要:在使用ArcEngine开发中,给ToolbarControl添加按钮形式的命令项相信大家都很熟悉了,因为网上的例子很多.但这种使用click调用功能的方式只能满足大部分用户在体验方面的需求,除 ...
- Linux新手扫盲
一. Linux特点 1.免费/开源: 2.支持多线程/多用户: 3.安全性好: 4.对内存和文件管理优越. Linux最小只需4M ——> 嵌入式开发 二. 文件目录 Linux系统所有软硬件 ...
- iOS自动化编译
最近研究了一下iOS的自动化编译,目的是为了简化测试和开发的同学沟通协调的次数,实现测试同学可以随时从网页操作编译SVN最新源码并打包ipa进行测试. 具体思路是通过从配置文件读取需要编译的项目配置列 ...
- NSJSONSerialization
/* 总结: json格式的读写: 解析: data = NSData dataWithContentsOfUrl:XXX id obj = [ NSJsonSerializat ...
- GCD的深入理解
GCD 深入理解(一) 本文由@nixzhu翻译至raywenderlich的<grand-central-dispatch-in-depth-part-1> 虽然 GCD 已经出现过一段 ...