shell编程之BASH变量(2)

变量命名规范

在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"
上一篇:学习Ember遇到的一些问题


下一篇:oj错误之char型超出范围