shell 变量-运算符-环境变量(个人笔记)

变量

命名规则

  • 开头是字母或下划线,中间可以是字母数字和下划线
  • 长度不能超过255个字符
  • 有效范围内变量名不能重复
  • 在bash中,变量默认类型都是字符串

分类:(默认格式都是字符串)

  • 用户自定义变量。
  • 环境变量:保存的是和系统环境相关的数据。名称可以自定义,作用是固定的。
  • 预定义变量:系统定义好的变量,不能修改值,也不能修改其作用。(包括位置参数变量:向脚本中传递参数或数据)

用户自定义变量

变量名=变量值 (等号中间不能有空格)

  • x=5 赋值变量
  • echo $x  输出变量

变量叠加

  • x=123
  • x="$x"456   显示123456
  • x=${x}789   显示123456789  2种方法选一种

变量查看

  • set  查看系统中的生效的变量
  • set -u 开启当变量不存在时,直接报错
  • env 仅用来查看环境变量

删除变量

  • unset x

环境变量(最好写成大写)

用户自定义环境变量

  • export 变量名=变量值   
  • export 变量名

常用环境变量

  • HOSTNAME  主机名
  • SHELL  当前的shell
  • TERM   终端环境
  • HISTSIZE  历史命令条数
  • SSH_CLIENT  记录的是当前连接客户端ip
  • SSH_TTY  ssh连接的总段pts/1
  • USER  当前登录的用户

 

  • PATH变量  系统搜索命令的路径 (echo $PATH显示该变量) 比如ls命令本应该/bin/ls才能生效,但是PATH配置了/bin,把ls命令扫描到了所有可以直接使用,不用完整路径。
  • PATH="$PATH":/root   在path末尾追加新的路径(上面有提到的方法)(这个是临时生效,要永久生效必须在文件中修改)

 

  • PS1变量:命令提示符设置  就是输入命令时左边的提示
  1. \d:显示日期,“星期 月 日”
  2. \H:显示完整主机名。“localhost.localdomain”
  3. \t:显示时间“HH:MMSS”
  4. \A:显示时间 "HH:MM"
  5. \u:显示当前用户名
  6. \w:显示当前坐在目录的完整名字
  7. \W:显示当前坐在目录的最后一个目录
  8. \$:提示符,root用户会提示"#",普通用户会提示"$"

语系变量

locale 查询当前系统语系(系统语言)

  • LANG:定义系统主语系的变量
  • LC_ALL:定义整体语系的变量
  • locale -a 查看linux支持的语系

/etc/sysconfig/i18n  系统默认语系存放路径

位置参数变量

$n  n代表数字,$0代表命令本身,$1-$9代表第1到第9个参数。10以上的参数使用大括号,${10}
$*  代表命令行中所有参数,把所有参数看成一个整体
$@  代表命令行中所有参数,把所有参数区分对待
$#  代表命令行中所有参数的个数

求和运算 最后修改权限755 才能执行

#!/bin/bash
num1=$1
num2=$2
#获取第一个和第二个变量,相加,输出
sum=$(($num1+$num2))
echo $sum

 遍历传入的变量,然后显示出来

#!/bin/bash
for i in "$*"
   do
      echo "show  $i"
   done

 假如传入1,2,3,4,5。遍历5次,每次显示一个数

#!/bin/bash
for y in "$@"
   do
      echo "show  $y"
   done

预定义变量

$?  最一次执行命令的返回状态。0执行正确,非0执行失败
$$  当前进程的进程号
$!  后台运行的最后一个进程的进程号

 read 相当于java中Scanner对象,在控制台等待用户输入一个命令

-t 等待时间,超过时间直接执行。-s 隐藏输入。-n 只允许输入指定数量字符(-n 1只允许输入一个数)


#!/bin/bash
read -p "please input your name:" name
echo $name

read -p "please input your age:" -t 20 age
echo $age

read -p "please input your passwd:" -s passwd
echo $passwd

read -p "please input your sex:" -n 1 sex
echo $sex

运算符

declare 声明变量类型(-给变量设置类型,+取消变量类型属性)

-a :数组
-i :整型
-x :环境变量  export 使用的就是-x
-r :只读变量
-p :显示变量被声明的类型

declare -i cc=$aa+$bb   这里会自动把aa和bb转成整型在运算

declare -a move[2]=live

echo ${move[2]}、echo ${move[*]}

数值运算

expr或者let

一下三种加法都是一样效果

aa=11
bb=22
mm=$(($aa+$bb))
ff=$[$aa+$bb]
#加号两边必须有空格
dd=$(expr $aa + $bb)

 变量测试

 环境变量配置

#配置文件直接生效
source 配置文件
. 配置文件   

 登录时生效的环境变量

/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
#下面两个只会对当前用户有效
~/.bash_profile
~/.bashrc

 执行顺序

环境变量可以写在任意文件内,会一次叠加,但如果是赋值,后面会覆盖前面的

正常登录由/etc/profile开始

通过su 切换用户 由/etc/bashrc开始

umask 查看系统默认权限在/etc/profile中

文件最高权限666 创建时没有执行权限
目录最高权限777

假如umask权限0022,  就是022 
文件创建默认权限644 (4读)
目录最创建权限755 (5读和执行)

退出时执行命令 ~/ .bash_logout

这里面是空的,可以写:history -c 清空历史命令(一般不用,用时安全考虑,输入了明文账号密码)

history 可以查看历史命令

~/.bash_history 历史命令文件。会在退出登录的时候,把本次登录的命令记录,写进去

/etc/issue  本地登录信息(警告信息,登录的时候胡显示出来)

/etc/issue.net   远程登录信息(警告信息)

不能使用上面的转义符,是否显示由/etc/ssh/sshd_config控制(需要加入“Banner /etc/issue.net”),

/etc/motd  本地或远程登录都会显示登录信息,不过它是登陆后显示。上面两个是登录前显示

https://www.runoob.com/linux/linux-shell-variable.html

 

 

linux 制定天数,然后打印日期

#!/bin/bash

for((i=1;i<=${1};i++));
do
DATE_TODAY=`date -d "-$i days" +"%Y-%m-%d"`
./pull_logs.sh $DATE_TODAY;
done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值