变量命名规范

在bash中,变量的默认类型都是字符串型,定义 name = 'kk'

变量分类

  • 用户自定义变量。变量自定义的
  • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或者数据的,变量名不能自定义,变量作用是固定的
  • 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

变量调用

echo $变量名
例如
echo $x
echo $name

变量叠加

x = 123
x = "$x"456
x = ${x}789

变量查看

set

设置环境变量

export 变量名 = 变量值

或

变量名 = 变量名
export 变量名

常用环境变量

bash-4.1$ env
HOSTNAME=iZ2zebwk59ftsrtzd05mpzZ 主机名
SHELL=/bin/bash 当前的shell
TERM=xterm 终端环境
HISTSIZE=1000 历史命令条数
SSH_CLIENT=114.247.188.89 14320 60022 当前操作环境使用ssh连接的,这里记录客户端ip
OLDPWD=/home/chenjinxin
SSH_TTY=/dev/pts/0 ssh连接的终端是pts/1
USER=program 当前登录的用户

PATH环境变量

PATH变量:系统查找命令的路径

bash-4.1$ echo $PATH
/usr/local/server/node/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/chenjinxin/bin echo $PATH
#查看PATH环境变量
PATH = "$PATH":/root/sh
#临时添加PATH变量的值

PS1环境变量

PS1变量:命令提示符设置

当前语系查询

locale

查询当前系统语系

bash-4.1$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIF

语系变量LANG

echo $LANG
查看系统当前语系
bash-4.1$ echo $LANG
en_US.UTF-8 locale -a | more
查看linux支持的所有语系

查看系统默认语系

cat /etc/sysconfig/i18n
bash-4.1$ cat /etc/sysconfig/i18n
LANG=en_US.UTF-8
SYSFONT=latarcyrheb-sun16

位置参数变量

位置参数变量 作用
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
$* 代表命令行中所有的参数,$*把所有的参数看成一个整体
$@ 代表命令行中所有的参数,不过$@把每个参数区分对待
$# 代表命令行中所有参数的个数

例子1

#!/bin/bash

num1 = $1
num2 = $2 sum = $(($num1+$num2)) echo $sum

$*和$@的区别

#!/bin/bash
for i in "$*"
#$*中的所有参数看成一个整体,所以这个for循环只会循环一次
do
echo "$i"
done for y in "$@"
#$@中的每个参数都看成是独立的,所以中几个参数,就会循环几次
do
echo "$y"
echo "\n"
done

预定义变量

预定义变量 作用
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确
$$ 当前进程的进程好(PID)
$! 后台运行的最后一个进程的进程好(PID)

接受键盘输入

read [选项][变量名]

  • -p "提示信息": 在等待read输入时,输出提示信息
  • -t 秒数: read命令会一直等待用户输入,使用此选项可以指定等待时间
  • -n 字符数: read命令只接受指定的字符数,就会执行
  • -s 隐藏输入的数据,适用于机密信息的输入
#!/bin/bash
read -p "Enter your name : " name
echo "Hi, $name. Let us be friends!"
#!/bin/bash
read -t 10 -p "Enter the Internet domain name (e.g. nixcraft.com) : "
domain_name
whois $domain_name
#!/bin/bash
read -s -p "Enter Password : " my_password
echo
echo "Your password - $my_password"

shell编程之BASH变量(2)的更多相关文章

  1. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  2. 03 shell编程之case语句与函数

    本文所有内容均来自当年博主当年学习笔记,若有不足欢迎指正 Shell编程之case语句与函数 学习目标: 掌握case语句编程 掌握shell函数的使用 目录结构: Case语句 Case语句的作用 ...

  3. shell编程之if语句

    shell编程之if判断 目录 shell编程之if判断 1.整数比较 2.字符串比较 3.举例 1.数字比较 2.字符串比较 4.Other 1.整数比较 -eq 等于,如:if [ "$ ...

  4. shell编程之case分支语句

    shell编程之case分支语句 case分支语句和if的多分支语句很相似. if多分支语句一般用在有(区间范围)的地方 :例如:0-100之间. if需要判断多个不同的条件. case的分支语句用在 ...

  5. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  6. shell编程之helloworld

    /bin/sh与/bin/bash的区别sh:如果前面有语句报错,则报错语句后面的命令不执行bash:如果前面有语句报错,后面的命令也会执行sh跟bash的区别,实际上就是bash有没有开启posix ...

  7. linux学习18 shell脚本基础-bash变量和逻辑运行

    一.回顾 1.用户管理,权限管理,install,mktemp 2.用户管理: 3.权限管理: mode,ownership mode: user group other r w x 4.命令:ins ...

  8. shell编程之export

    shell 与 export命令用户登录到Linux系统后,系统将启动一个用户shell.在这个shell中,可以使用shell命令 或声明变量,也可以创建并运行shell脚本程序.运行shell脚本 ...

  9. Linux学习笔记(16)shell基础之Bash变量

    1. 用户自定义变量 (1)变量设置规则 ① 变量名称可由字母.数字和下划线组成,但不能以数字开头: ② 变量的默认类型为字符串类型,如果要对数值运算,则必须指定变量类型为数值型: ③ 变量用等号连接 ...

随机推荐

  1. X-Windows桌面

    提到X-Windows桌面,人们最先想到的一般都是KDE和GNOME.目前大多数的Linux发行版上的桌面环境都采用了这两个东西.确实,KDE和GNOME做得很好,界面美观.使用方便,而且现在Bug越 ...

  2. vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全

    https://segmentfault.com/q/1010000005618139 vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全 点击提交,发送请求.但是api ...

  3. [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse

    来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...

  4. python 与redis

    一.redis安装 源码安装:   1.wget http://download.redis.io/redis-stable.tar.gz   2.yum install gcc   3.tar zx ...

  5. 了解JDK 6和JDK 7中substring的原理及区别

    substring(int beginIndex, int endIndex)方法在jdk 6和jdk 7中的实现是不同的.了解他们的区别可以帮助你更好的使用他.为简单起见,后文中用substring ...

  6. [转]sysctl -P 报错解决办法

    问题症状 修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl  -P 报错 error: "net.bridge.bridge-nf-call-ip6ta ...

  7. JavaScript ES6 module 模块

    在使用JavaScript开发大型项目时,模块开发概念是一个必须考虑的问题.其目的就是通过命名空间对各类业务对象进行一定的封装,防止命名冲突. 本篇着重介绍ES6 module中的export和imp ...

  8. 搭建Hadoop集群(centos6.7+hadoop-2.7.3)

    hadoop集群有三种运行模式:单机模式.伪分布模式.完全分布模式.我们这里搭建第三种完全分布模式,即使用分布式系统,在多个节点上运行. 1 环境准备 1.1 配置DNS 进入配置文件,添加主节点和从 ...

  9. GIT工程迁移方法总结

    Git工程迁移方法总结 Git最近准备迁移一下位置,这里采用命令行的方式,做如下操作. 1.git init  初始化git仓库,这个时候发现本地文件夹多了个.git的文件夹. 2.git remot ...

  10. 【转】CString,string,char*综合比较

    (一)  概述 1.string和CString均是字符串模a板类: 2.string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: 3.CString(typedef CString ...