Linux Shell 基础之变量
Shell 变量概述
Shell 与其他语言的对比
- PHP 和 JAVA 主要实现功能
- Shell 简化管理操作
什么是变量
- 变量是计算机内存的单元,其中存放的值可以改变
- 变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用
变量命名规则
- 变量名必须以字母或下划线开头,名字中间只能由字母、数字和下划线组成
- 变量名的长度不得超过 255 个字符
- 变量名在有效的范围内必须是唯一的
- 在 Bash 中,变量的默认类型都是字符串型
变量存储类型
- 整型
- 浮点型
- 日期型
- 字符串型
变量定义分类
- 用户自定义变量:用户自定义的变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的。变量名不能自定义,变量作用固定。
- 预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
Shell 变量与变量分类
- 用户自定义变量
- 变量定义
变量名=变量值
x=5
name="Luis"
- 变量赋值时候,变量名与变量值之间不能有空格
- 变量调用
echo $x
echo $name
- 变量叠加
- x=123
- x="$x"456
- x=${x}789
- 变量查看
- set
- -u 如果设定此选项,调用未声明变量时会报错(默认无任何显示)
- set
- 变量删除
unset 变量名
- 变量定义
- 环境变量
- 用户自定义环境变量
- 设置环境变量
export 变量名=变量值
变量名=变量值;export 变量名
- 查看环境变量
set
查看所有变量env
查看环境变量
- 删除环境变量
unset 变量名
- 设置环境变量
- 系统常用的环境变量
- HOSTNAME 主机名
- SHELL 当前的 Shell
- TERM 终端环境
- HISTSIZE 历史命令条数
- SSH_CLIENT 当前操作环境是用 ssh 连接的,这里记录客户端 IP
- SSH_TTY ssh 连接的终端时 pts/1
- USER 当前登录的用户
- PATH 系统查找命令的路径
echo $PATH
查看 PATH 环境变量PATH="$PATH":/root/sh
增加 PATH 变量的值
- PS1 变量 命令提示符设置
- \d 显示日期,格式为"星期 月 日"
- \H 显示完整的主机名,如默认主机名 "localhost.localdomain"
- \t 显示 24 小时制时间,格式为 "HH:MM:SS"
- \A 显示 24 小时制时间,格式为 "HH:MM"
- \u 显示当前用户名
- \w 显示当前所在目录的完整名称
- \W 显示当前所在目录的最后一个目录
- \$ 提示符。如果是 root 用户会显示提示符为 "#",如果是普通用户会显示提示符为 "$"
- 例子
PS1='[\u@\A \w]\$ '
- 语系变量
locale
查询当前系统语系(echo $LANG
)- LANG 定义系统主语系的变量
- LC_ALL 定义整体语系的变量
locale -a | more
查看 Linux 支持的所有语系cat /etc/sysconfig/i18n
查询系统默认语系(下次开机语系变量)
- 用户自定义环境变量
- 位置参数变量
位置参数变量|作用 ---|--- $n|n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10} $*|这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体 $@|这个变量代表命令行中所有的参数,不过 $@ 把每个参数区分对待 $#|这个变量代表命令行中所有参数的个数
- 预定义变量
预定义变量|作用 ---|--- $? | 最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己决定,则证明上一个命令执行不正确) $$ | 当前进程的进程号 $! | 后台运行的最后一个进程的进程号
- 接收键盘输入
read [选项] [变量名]
- -p 提示信息:在等待 read 输入时,输出提示信息
- -t 秒数:read 命令会一直等待用户输入,使用此选项可以指定等待时间
- -n 字符数:read 命令只接受指定的字符数,就会执行
- -s 隐藏输入的数据,适用于机密信息的输入
Shell 变量例子
位置参数例子 1
#!/bin/bash
num1=$1
num2=$2
# 变量 sum 的和是 num1 加 num2
sum=$(($num1+$num2))
# 打印变量 sum 的值
echo $sum
位置参数例子 2
#!/bin/bash
# 使用 $# 代表所有参数的个数
echo "A total of $# parameters"
# 使用 $* 代表所有的参数
echo "The parameters is:$*"
# 使用 $@ 也代表所有参数
echo "The parameters is:$@"
位置参数例子 3($* 与 $@ 的区别)
#!/bin/bash
for i in "$*"
# $* 中的所有参数看成是一个整体,所以这个 for 循环只会循环一次
do
echo "The parameters is: $i"
done
for y in "$@"
# $@ 中的每个参数都看成是独立的,所以 "$@" 中有几个参数,就会循环几次
do
echo "Parameter:$y"
done
接收键盘输入例子 1
#!/bin/bash
read -p "Please input your name: " -t 30 name
echo $name
read -p "Please input your passwd: " -s passed
echo -e "\n"
echo $passwd
read -p "Please input your sex [M/F]: " -n 1 sex
echo -e "\n"
echo $sex
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Head First Design Patterns
下一篇: Linux 安装 MySQL
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论