shell变量

shell主要作用,帮助管理员简化管理操作
变量

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

但是和别的编程语言不同的是:

shell变量的默认类型是字符串
哪怕a=123
shell也会认为是”123”

shell的变量可以分为三类

  • 用户自定义变量
  • 环境变量
  • 预定义变量

一, 用户自定义变量

语法: 变量名称=变量值
name=”节操”
跟其他变成语言不一样的是等号=, 两边不能有空格

调用变量

$变量名
echo $name

echo:输出到屏幕
调用变量要在变量名前加 "$"

在原变量后面再追加,有两种写法

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

set命令

查看系统中所有已经生效的变量

删除变量

unset 变量名
变量名前不用加$符

二,环境变量

环境变量和用户自定义变量之间有什么区别呢

环境变量是全局变量,只在当前的shell和子进程中生效
用户自定义变量, 只在当前shell中生效

语法

export y=34

接下来看一下系统中常用的环境变量

env 查看环境变量

HOSTNAME: —– 主机
SHELL: —– 当前的shell
TERM: —– 终端环境
HISTSIZE: —– 历史命令条数
SSH_CLIENT: —– 当前操作环境是用shell连接的,这里记录客户端ip
SSH_TTY: —– ssh连接的终端是pts/1
USER: —– 当前登录的用户

还有两个用到的比较多

PATH: 系通查找命令的路径
PS1: 命令提示符设置

我们在text目录下新建一个脚本文件hello.sh
要执行这个脚本文件有两个方法
1)增加可执行权限

vim text/hello.sh
chmod 755 text/hello.sh 
text/hello.sh

2)将目录添加到环境变量(重启失效,需要写入文件)

PATH="$PATH":/root/text
hello.sh

ps1就是更改[root@localhost ~]# 用的

\d :代表日期,格式为weekday month date,例如:”Mon Aug 1”
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
# :下达的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
默认的PS1内容为: PS1=’[\u@\h \W]\$ ’ ,所以默认的提示符就是: [root@linux ~]#

三,预定义变量
预定义变量中还有个分类–位置参数变量

$n ---- n为数字,0代表命令本身,1-9代表第一到第九个参数,10以上用大括号包含
$* ---- 这个变量代表命令行中所有的参数,$*把所有的参数看做一个整体
$@ ---- 这个变量也代表命令行中所有的参数,$@把每个参数区分对待
$# ---- 这个变量代表命令行中所有参数的个数

例子

vim ./text/hello1.sh
#!/bin/bash

#会获取传递的前两个参数
num1=$1
num2=$2
sum=$(($num1+num2))
echo $sum

# $*将传递的参数看做一个整体,这里只循环一次
for i in "$*"
        do
                echo "$i"
        done

# $@将传递的参数,区分对待,传递多少个,循环多少次
for i in "$@"
        do
                echo "$i"
        done

# $#统计传递参数的个数
echo "$#"

执行脚本

chmod 755 ./text/hello1.sh 

这里传递了4个参数

[root@localhost ~]# ./text/hello1.sh 10 20 30 40 

30
10 20 30 40
10
20
30
40
4

预定义变量

$? :  上一个命令正确执行,返回0
$$ :  当前进程的pid
$! :  后台运行的最后一个一个进程的pid

接受键盘输入
read

-p    "提示信息" 在等待read输入时,输出提示信息
-t    秒数,read命令会一直等待用户输入,此选项可以指定等待时间
-n    字符数:read命令只接受指定的字符数,就会执行
-s    隐藏输入的数据,适用于机密信息的输入
read -p "please input you name" -t 30 name
echo $name
read -p "please input you password" -s passwd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值