shell基础以及脚本中的变量

5 篇文章 0 订阅

shell基础以及脚本中的变量

shell基础
问题导向“什么是shell?

shell:Linux系统是一个多任务,多用户的操作系统,内核负责任务的调度与管理,为了阻碍外界直接对内核进行操作,就加一层shell来保护内核,所以说它是一个用户和Linux内核之间的接口程序,在提示符下输入的每个命令都由shell先解释然后传给Linux内核。用户通过这个界面访问操作系统内核的服务。

bash:Linux中默认的shell就是bash(Bourne-Again shell)
还有许多shell:tcsh,ash,bsh,csh,ksh等。
 

脚本:脚本是一种解释型语言
存在的意义:记录在Linux系统中的操作步骤,进行批量操作的一个程序文件。
数据+逻辑=程序


shell python perl 都是解释性语言

一、shell脚本的创建
1、创建:以.sh结尾文件,表示这是一个脚本
vim script.sh
#!/bin/bash脚本使用的解释器,通常用幻数 "#!" 指定
#AUTHOR    作者
#DATE    创建日期
 #MAIL    联系方式
#VERSION   版本号

2、脚本编写的规范:
在vim的配置文件里/etc/vimrc设定使在编写脚本时,自动加上注释:
方法1:在vim新的文件时,自动加上,但是不会在已经存在文件里加上,比如touch file.sh  然后vim  file.sh时,就不会加上,至于是自动给以什么文件结尾里边加,在vimrc里可以设定


方法2:写脚本时,vim脚本,点击快捷键自动加上
二、脚本调试与执行:
1、脚本的调试:
sh -x scripts  前边的加号是脚本内容,没有+的是执行完脚本的结果
一般写脚本,最好写完一个命令,然后测试,这样比较好排错

2、脚本的执行
1、需要执行权限,原因,在绝对路径执行脚本\234不需要执行权限原因:在当前目录执行
1、 ./script.sh需要有执行权限chmod +x script.sh 因为该命令以绝对路径执行脚本

2、bin/bash script.sh 执行,会在当前shell里开启一个子shell

3、source scripts.sh 会立即在当前系统生效
4、. scripts.sh    相当于source


三、脚本示例

1、显示当前的IP地址并且不显示回环IP: ifconfig | awk '/inet\>/&&!/127.0.0.1/{print $2}'
2、执行 user_show.sh     显示当前主机里能登陆系统的用户
3、执行 host_message.sh   显示当前主机的名称,IP,以及能登陆的用户
4、clear_log.sh       执行命令清空日志

 

脚本中的变量

一、
变量的定义

变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来标示不固定的值的一种方法
变量是一种使用方便的占位符,用于引用计算机内存地址,该地
址可以存储 Script 运行时可更改的程序信息
在 shell 中变量是不能永久保存在系统中的,必须在文件中声明

$USER变量 -- 内存地址的别名

下边二者的不同:
su - user   会加载用户的环境变量
su user 不会加载profile环境信息

/etc/profile
env  查看所有的系统环境变量
二、shell脚本里变量的定义方法
环境级: export a=1  只在当前环境生效,比如切换一次shell环境就是改变了,此时变量不生效
用户级 :vim ~/.bash_profile   在该文件里写入变量,只在当前用户下生效

source .bash_profile
系统级: vim /etc/profile   相当于全局变量

source .bash_profile
 
三、变量名称的规范:
变量名可以由字母的大小写,数字,下划线组成。
Hello_World  或者HELLO_WORLD
四、字符的转译及变量的声明

  • \   转译单个字符

""   弱引用,批量转译 "" 中出现的字符,
''   强引用,批量转译 '' 中出现的字符
    '' 与 "" 两者的区别在于, "" 不能转译 "\","`","!","$"

  • ${}     变量声明

  例如:     A=1
echo $Ab
echo ${A}b


五、变量值传递


$1脚本后的第一串字符串
$2脚本后的第二串字符串
$3脚本后的第三串字符串
$#脚本后所跟字符串的哥数
$*脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@脚本后跟的所有字符串,模式为“ 1”“2”“3”

六、用 read 实现变量传递

read  WESTOS
read -p "input: " -s  WESTOS     输出不回显

七、Linux系统中命令别名的设定

alias   显示命名别名以及系统中的
alias yyz='systemctl restart network'  环境设定

vim  ~/.bashrc         用户设定,只针对该用户有作用
添加别名设定        

vim /etc/bashrc       系统及设定
添加别名设定

系统和用户环境的添加完毕,执行命令:
source .bashrc
读取新加的设定

Linux系统中命令别名的删除
步骤:
1、在文件中删除
2、unalias 别名设定


八、、利用命令执行结果设定变量
1、Hostname=$(hostname)   将hostname这一执行结果设定为变量
   Hostname=`hostname`
   e
   echo $Hostname则显示的主机信息
$?
$?  是命令在执行完成之后产生的退出值
    范围是 [0-255]
当 $0=0 时表示命令执行没有错误输出
这个值可以用 exit 命令执行 .
例如 exit 66

九、、脚本中的函数
脚本中的函数时把一个复杂的语句块定义成一个字符串的方法

例1:RED函数

RED()
{
    echo -e "\033[31m$*\033[03m"
}
RED ”hello world!!“


思路转换:可以类比C语言的函数,递归显示重复输出

例2:创建create_user.sh脚本,功能是创建用户以及密码,用户存在时,提示用户存在,然后继续输入要创建的用户,然后设定用户密码,输入exit,退出。

USER()
{
        read -p "please input username:" username
        [ "$username" = "exit" ]&&{
                echo bye                
                exit 0                          
        }
                useradd $username &> /dev/null&&{
                read -p "please input password:" -s passwd
                echo $passwd | passwd --stdin $username &> /dev/null
                echo ""
                echo -e "\033[32m$username is created successful !!!\033[0m"
        }||{
                echo -e "\033[32m$username is already exist  !!!\033[0m"
           }

        USER
}
USER

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值