Linux编程之变量
Bash变量与变量分类
变量命名规则
- 变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成
- 变量名的长度不得超过255个字符
- 变量名在有效的范围内必须是唯一的
- 在Bash中,变量的默认类型都是字符串型
变量按照存储数据分类
- 字符串型
- 整型
- 浮点型
- 日期型
shell变量分类
- 用户自定义变量:变量是自定义的
- 环境变量:这种变量中主要保存的是系统操作环境相关的数据
变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的 - 位置参数变量:这种变量主要用来向脚本当中传递参数或数据的,
变量名不能自定义,变量作用是固定的 - 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
Bash变量--用户自定义变量
变量定义
变量名=变量值 # 等号左右不能有空格
如 name=tom
变量调用
echo $变量名
变量叠加
x=123
x="$x"456
x=${x}789
变量查看
set
选项:
-u 如果设置此选项,调用未声明变量时会报错(默认无任何提示)
变量删除
unset 变量名
如:unset name
Bash变量 -- 环境变量
环境变量与用户自定义变量的区别
用户自定义变量只在当前的shell中生效
环境变量在当前shell和这个shell的所有子shell中生效
功能说明:以树状图显示程序。
语 法:pstree [-acGhlnpuUV][-H <程序识别码>][<程序识别码>/<用户名称>
参 数:
-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
-c 不使用精简标示法。
-G 使用VT100终端机的列绘图字符。
-h 列出树状图时,特别标明现在执行的程序。
-H <程序识别码> 此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
-l 采用长列格式显示树状图。
-n 用程序识别码排序。预设是以程序名称来排序。
-p 显示程序识别码。
-u 显示用户名称。
-U 使用UTF-8列绘图字符。
-V 显示版本信息。
补充说明:pstree指令用ASCII字符显示树状结构,清楚地表达程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程 序视为基层,并显示之后的所有程序。若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。
设置环境变量
export 变量名=变量值
或
变量名=变量值
export 变量名
查看环境变量
set #查看所有环境变量
env #查看环境变量
调用变量
echo $变量名 # 如 echo $name
删除变量
unset 变量名 # 如 unset name
PATH环境变量
PATH变量:系统查找命令的路径
echo $PATH #查看PATH环境变量
PATH="$PATH":/root/sh #增加PATH变量的值,等号两边不能有空格
PS1 环境变量
PS1变量:命令提示符设置
\d:显示日期,格式为“星期 月 日”
\H:显示完整的主机名。如默认主机名“localhost.localdomain"
\t:显示24小时制时间,格式为 “HH:MM:SS”
\A:显示24小时制时间,格式为 “HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
bash语序变量
locale
# 查询当前系统语序变量
locale -a #查看所有语系
locale -a | more
LANG 定义系统主语序的变量
LC_ALL 定义整体语序的变量
echo $LANG #查看当前语系变量
echo $LC_ALL #查看整体语序的变量
cat /etc/sysconfig/i18n #查询系统默认语系
cat /etc/default/locale #ubuntu系统下默认语言的文件
linux中文支持
前提条件,正确安装的中文字体和中文语系:
如果有图形界面,可以正确支持中文显示
如果使用第三方远程工具,只要语系设置正确,可以支持中文显示
如果使用纯字符界面,必须使用第三方插件(如zhcon等)
位置参数变量
$n:n为数字,$0代表命令本身,$1-$9代表第一道第九个参数,
十个以上的参数需要用大括号包含,如${10}
$*:这个变量代表命令行中所有的参数,$*把所有参数看出一个整体
$@:这个变量也是代表命令行中所有参数,不过$@把每个参数区分对待
$#:这个变量代表命令行中所有参数的个数
#!/bin/bash
#加减乘除 (+-*/)
x1=$1
operator=$2
x2=$3
echo "x1" $operator "x2 = " $(($x1 $operator $x2))
#!/bin/bash
for i in "$*" #$*中所有参数看成一个整体,所以for循环只执行一次
do
echo "The parameters is: $i"
done
for y in "$@" #$@中的每个参数是独立的,因此“$@”中有几个参数,就会执行几次
do
echo "Parameter:$y"
done
echo $#
预定义变量
$?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。
$$:当前进程的进程号(PID)
$!:后台运行的最后一个进程的进程号(PID)
echo $$ #返回当前进程号 7588
ps aux | grep 7588
#!/bin/bash
echo "current PID: $$"
find / -name hello.sh & #&为放入后台
echo "backgroud: $!"
接受键盘输入
read [选项] [变量名]
选项:
-p:“提示信息”:在等待read输入时,输出提示符信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符个数:read命令只接受指定的字符数,就会执行
-s:隐藏输入的数据,适用于机密信息的输入
#!/bin/bash
read -p "please input your name: " -t 30 name
echo -e "\n$name"
read -p "please input your passwd: " -s passwd
echo -e "\n$name"
read -p "please input your angend [M/F]: " -n 1 sex
echo $sex
Linux编程之变量的更多相关文章
- [Linux编程]__read_mostly变量含义
1.定义 __read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义: #define __read_mostly ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结 转载
基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...
- 【转】牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...
- linux编程获取本机网络相关参数
getifaddrs()和struct ifaddrs的使用,获取本机IP 博客分类: Linux C编程 ifaddrs结构体定义如下: struct ifaddrs { struct ifad ...
- 面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...
- Linux编程简介
Linux编程可以分为Shell(如BASH.TCSH.GAWK.Perl.Tcl和Tk等)编程和高级语言(C语言,C++语言,java语言等)编程,Linux程序需要首先转化为低级机器语言即所谓的二 ...
- linux 编程技术
linux 编程技术No.1前期准备工作 GCC的编译过程分为预处理.生成汇编代码.生成目标代码和链接成可执行文件等4个步骤. 使用vim编写C 文件 : [lining@localhost prog ...
- [转帖]linux bash环境变量简单总结
linux bash环境变量简单总结 来源链接:http://www.178linux.com/8005 原创文章,如有转载,请注明原文地址 需要简单学习一下. 其实 我都是直接放一个 .sh文件到 ...
随机推荐
- hihocoder第三十六周 二分查找
题目链接:http://hihocoder.com/contest/hiho36/problem/1 , 一个比较简单的二分. 算法: 由于数据量比较大,O(nlogn)无法通过,所以不能先排序再查找 ...
- pat甲级1013
1013 Battle Over Cities (25)(25 分) It is vitally important to have all the cities connected by highw ...
- SAP成都研究院CEC团队三巨头之一:M君的文章预告
国人总倾向于把特点或者作用类似的人或物放在一起比较并做出排名,于是就有了许多"某某某三巨头"的称谓. 最举世闻名的莫过于二战三巨头:丘吉尔,罗斯福和斯大林. 还有陪伴咱八零后童年时 ...
- 一个普通 iOS 码农的几个小项目相关知识点总结
题记:在开发的路途上,有的人走的很深很远,而对于停留在初级阶段的我来说,还要学的.经历的还有很多... list sqlite 数据库中,当把表里的数据都清空时,下次插入的数据的 id 主键不会从 0 ...
- JPA将查询结果转换为DTO对象
前言 JPA支持使用@Query自定义查询,查询的结果需要字节用DTO对象接收,如果使用HQL的查询语句,可以将直接将DTO对象的构造方法传入hql中,直接转为DTO对象:而如果使用native sq ...
- Android中的Matrix(矩阵)
写在前面 看这篇笔记之前先看一下参考文章,这篇笔记没有系统的讲述矩阵和代码的东西,参考文章写的也有错误的地方,要辨证的看. 如何计算矩阵乘法 android matrix 最全方法详解与进阶(完整篇) ...
- World Wind Java开发之五——读取本地shp文件(转)
http://blog.csdn.net/giser_whu/article/details/41484433 World Wind Java 使用IconLayer图层类表现点和多点数据,使用Ren ...
- vuejs挂载点,模板与实例的关系
<body> <div id='root'> <h1>{{msg}}</h1> </div> <script> new Vue( ...
- 2018.6.21 css的应用---注册表格
参与css样式表格的注册表单 <!DOCTYPE html> <head> <meta charset="UTF-8" /> <meta ...
- pip 安装出现异常
MacBookPro:~ mac$ pip install numpy Collecting numpy Downloading numpy-1.13.1-cp35-cp35m-macosx_10_6 ...