shell中的脚本变量

变量就是内存一片区域的地址,用一串固定的字符来表示不固定的目标。

一、变量的定义

环境级别

export a=2          ##生效于当前shell环境

用户级别

vim ~/.bash_profile               ##生效于当前用户
export a=2
:wq
source ~/.bash_profile

系统级别

vim /etc/profile.d/westos.sh        ##生效与整个系统
export b=3
:wq
source /etc/profile.d/westos.sh 

变量名称:
由字母,下划线_,数字组成。不能用数字开头

二、变量的转译,声明,数组

转译
\              ##转译单个字符
""            ##弱引用,批量转译个数字符 不能转译\ $ !
''             ##强引用

声明
a=1
echo $ab       
echo ${a}b    ##用{}声明a是个变量

数组

b=(1 2 3 4 5)
echo ${b[*]}          ##所有元素
echo ${b[0]}          ##第一个元素
echo ${b[1]}          ##第二个元素
echo ${b[-1]}         ##倒数第一
echo ${b[-2]}         ##倒数第二
echo ${b[@]}          ##所有
echo ${b[@]:1:2}      ##从第2个元素开始后两个元素
unset b[1]            ##删除第二个元素
unset b               ##删除变量

三、Linux中命令的别名设定

alias xie='vim'               ##临时设定
vim ~/.bashrc                 ##只针对与用户生效
alias xie='vim'                      
:wq
soure ~/.bashrc

vim /etc/bashrc               ##针对系统所以用户生效
alias xie='vim'
:wq
soure /etc/bashrc

alias                         ##查看所有别名
unalias xie                   ##删除当前环境中的alias

四、用户环境变量的更改

vim ~/.bash_profile         
PATH=$PATH:$HOME/bin:/mnt      ##执行命令时/mnt下的命令和脚本可以相对路径调用
:wq
source ~/.bash_profile

五、传参

1.直接利用命令执行结果作变量的值
TIME=$(date)  或者TIME='date'      

 2.脚本中的非交互传参

若一个脚本为test.sh,执行时:sh test.sh westos linux redhat。则在脚本中各个变量的含义为:
$0 -----> test.sh                     脚本本身
$1 -----> westos                    脚本后所输入的第一串字符
$2 -----> linux
$3 -----> redhat
$* -----> westos linux redhat        脚本后所输入的所有字符"westos linux redhat"
$@ -----> westos linux redhat      脚本后所输入的所有字符'westos' 'linux' 'redhat'
$# -----> 3                                     脚本后所输入的字符串个数
3.交互传参
read  WESTOS                      ##对westos赋值
read -p "please input word:"    ##输出提示语
-s                                             ##隐藏输入内容

六、脚本函数

可以理解为脚本中的脚本
WORD()
{
    action1
    action2
}
WORD 在脚本中就代表action1 action2这两个动作

脚本练习:

1、编写check_file.sh 用来判别文件类型,可反复输入,输入exit时退出

#!/bin/bash
File_Type()
{ 
  [ $1 "$FILENAME" ] && {
  echo $FILENAME is $2
  echo ""
  Check_File
  }
}

Check_File()
{
  read -p "please input filename:" FILENAME
  [ "$FILENAME" = "exit" ] && {
  echo "Bye"
  exit
  }
  File_Type "! -e" "not exist"
  File_Type -L "link file"
  File_Type -f "common file"
  File_Type -d "directory"
  File_Type -S "socket"
  File_Type -b "block file"
  File_Type -c "cahr file"
}

Check_File

2、编写create_user1.sh 实现建立用户与设置密码,可反复输入,输入exit退出

#!/bin/bash
Create_User()
{ read -p "Please input username:" NAME
  [ "$NAME" = "exit" ] && {
  echo "Bye"
  exit
  }

  id $NAME &> /dev/null && {
  echo "$NAME is exist"
  } || {
  useradd $NAME
  read -p "Please input password:" -s PASSWD
  echo ""
  echo $PASSWD | passwd --stdin $NAME &> /dev/null && echo "$NAME is created"  
  }
  Create_User
}

Create_User

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值