bash编制程序也叫shell编制程序

bash编制程序也叫shell编制程序

Linux中bash编程,Linuxbash编程

bash编程也叫shell编制程序

  预定义变量

        $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确的执行;如果这个变量返回的值非0(具体是那个数,有命令自己来决定),则证明上一个命令执行不正确。


        $$当前进程的进程号(PID)


        $!后台运行的最后一个进程的进程号(PID)


  运算符


        declare 声名变量的类型   
        declare [+/-][选项] 变量名


        - 给变量设定类型属性


        + 取消变量的类型属性


        -i 将变量声名为整数型


        -x将变量什申明为环境变量


        -p 显示指定变量的被声名的类型

举例:

a=1
b=2
declare -i c = $a+$b
c=$(($a+$b)) 注意用双小括号,因为Linux中认为一切皆为字符。如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()

shell编程
shell主要用来简化管理操作
bash变量
一.什么是变量
变量是计算机内部存款和储蓄器的单元,当中存放的值能够改动。
变量命名规则:字母或下划线发轫,可由字母、数字和下划线组成。
长度不能够超越251个字符。变量名在有效限制内必须唯一。在bash中,变量的暗中同意类型都是字符型。
【澳门金沙国际】Linux中bash编制程序。变量安装存款和储蓄数据分类,字符串型、整型、浮点型、日期型
变量在“系统内”分类:
用户自定义变量。即:变量是自定义的。
情况变量:主要保存和系统操作遇到息息相关的多少。可自定义,但对系统生效的条件变量名和变量功能是固定的。
职责参数变量:主要用来向脚本个中传递参数或数量。变量名不能够自定义,变量功效是原则性的。
预订义变量:是bash中已定义好的变量,变量名无法自定义,变量作用固定的。

预订义变量
        $?
最终一遍推行的一声令下的回来状态。倘使这些变量的值为0,表明上三个指令正确的施行;纵然这一个变量再次来到的值非0(具体是11分数,有指令本人来调节),则表明上3个下令实践不正确。
        $$当前历程的长河号(PID)
        $!后台运营的结尾1个经过的经过号(PID)
  运算符
        declare 声名变量的品类  
        declare [+/-][选项] 变量名
        – 给变量设定类型属性
        + 撤消变量的花色属性
        -i 将变量声名叫整数型
        -x将变量什注脚为意况变量
        -p 呈现钦点变量的被声名的项目

预订义变量
        $?
最终3遍实施的指令的回到状态。倘诺这么些变量的值为0,表明上四个发令正确的实践;借使那个变量再次来到的值非0(具体是充足数,有发号施令本身来调整),则印证上一个命令实践不正确。
        $$当前经过的进度号(PID)
        $!后台运维的末尾八个进度的历程号(PID)
  运算符
        declare 声名变量的品种  
        declare [+/-][选项] 变量名
        – 给变量设定类型属性
        + 撤消变量的连串属性
        -i 将变量声名称为整数型
        -x将变量什评释为景况变量
        -p 突显钦定变量的被声名的档期的顺序

单分支if  条件语句

if [ 条件判断式 ];then
    程序
fi
or  
if [ 条件判断式 ]
    then
        程序
fi

二.自定义变量
格式:变量名=变量值 注:等号两侧无法有空格

举例:

举例:

认清登入用户是或不是为root用户:

#!/bin/bash

#grep 获取行通配符
#cut 获取列统配符,以 = 分割 2 获取第二列
login_name=$(env | grep LOGNAME | cut -d "=" -f 2)
#echo $login_name

if [ "$login_name" != "root" ]

        then
                echo 'isnot root'
fi
  • x=伍 准确的定义
  • name = xxxx 错误的定义
    变量调用:
    echo $变量名
    如:echo $x
    echo $name
    瞩目:$x+$y 不会做数值运算
    变量叠加:
    x=123
    x=”$x”456 ->123456
    x=${x}789 ->123456789
    若进行 set -u 后,(前提是变量a不存在)echo $a ,则显示-bash: a:
    unbound variable
    变量删除:
    unset 变量名
    三.遭遇变量
    遇到变量与用户自定义变量差异:
    情况变量是全局变量,用户自定义变量是有个别变量。
    用户自定义变量只在此时此刻的shell中生效,遭逢变量在此时此刻shell和该shell的兼具子shell中都生效。
    对系统生效的情形变量名和变量效能是一定的。
    安装情状变量
    export 变量名=变量值
    或:变量名=变量值 export 变量名
    查看蒙受变量
    set #翻看全体变量
    env #查阅情况变量
    删除情形变量 unset 变量名
    常用情形变量:
    HOSTNAME:主机名
    SHELL:当前的shell
    TEHighlanderM:终端意况
    HISTSIZE:历史命令条数
    SSH_CLIENT:当前操作环境是用ssh连接的,那里记录客户端ip
    SSH_TTY:ssh连接的终极时pts/1
    USETiggo:当前报到用户
a=1
b=2
declare -i c = $a+$b
c=$(($a+$b)) 注意用双小括号,因为Linux中认为一切皆为字符。如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()
a=1
b=2
declare -i c = $a+$b
c=$(($a+$b)) 注意用双小括号,因为Linux中认为一切皆为字符。如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()

看清根分区的占用率

#!/bin/bash
#df -h 任性话显示磁盘的利用率
#awk 获取第五列
#cut 对字符用 % 进行分割 获取第一列值
result=$( df -h | grep sda1 | awk '{print  $5}'  | cut -d % -f 1)

if [ "$result" -lt '90' ]
        then
                echo 'the root dir  is not full'

fi

PATH意况变量
PATH变量:系统查找命令的路子
echo $PATH #查阅PATH意况变量
PATH=”$PAHT”:/root/sh #追加PAHT变量的值
PS一情状变量:命令提醒符设置

单分支if  条件语句

if [ 条件判断式 ];then
    程序
fi
or  
if [ 条件判断式 ]
    then
        程序
fi

单分支if  条件语句

if [ 条件判断式 ];then
    程序
fi
or  
if [ 条件判断式 ]
    then
        程序
fi

双支行if条件语句

if [ 条件判断式 ]
    then
         ...
    else
        ...
fi

岗位参数
目前语系查询:
locale # 查询当前系统语系
-LANG :定义系统主语系的变量
-LC_ALL:定义整体语系的变量

看清登陆用户是还是不是为root用户:

#!/bin/bash

#grep 获取行通配符
#cut 获取列统配符,以 = 分割 2 获取第二列
login_name=$(env | grep LOGNAME | cut -d "=" -f 2)
#echo $login_name

if [ "$login_name" != "root" ]

        then
                echo 'isnot root'
fi

认清登入用户是或不是为root用户:

#!/bin/bash

#grep 获取行通配符
#cut 获取列统配符,以 = 分割 2 获取第二列
login_name=$(env | grep LOGNAME | cut -d "=" -f 2)
#echo $login_name

if [ "$login_name" != "root" ]

        then
                echo 'isnot root'
fi

判别nginx 是还是不是在运作 (最棒不用含有nginx作为文件名)

#!/bin/bash
result=$(ps aux | grep nginx | grep -v grep)

if [ -n "$result" ]
        then
                echo "$(date) nginx is ok !"
        else
                echo "$(date) nginx is not ok !"

                sudo /etc/init.d/nginx start &>/dev/null
                echo "$(date) restart nginx !!"
fi

echo $LANG #翻看系统当下语系
locale -a | more #查看Linux协理的有着语系
cat /etc/sysconfig/i18n # 查询系统暗中同意语系

判断根分区的占用率

#!/bin/bash
#df -h 任性话显示磁盘的利用率
#awk 获取第五列
#cut 对字符用 % 进行分割 获取第一列值
result=$( df -h | grep sda1 | awk '{print  $5}'  | cut -d % -f 1)

if [ "$result" -lt '90' ]
        then
                echo 'the root dir  is not full'

fi

认清根分区的占用率

#!/bin/bash
#df -h 任性话显示磁盘的利用率
#awk 获取第五列
#cut 对字符用 % 进行分割 获取第一列值
result=$( df -h | grep sda1 | awk '{print  $5}'  | cut -d % -f 1)

if [ "$result" -lt '90' ]
        then
                echo 'the root dir  is not full'

fi

多分支if语句

if []
    then 
elif []
    then
...
else 
   ...
if

bash编制程序也叫shell编制程序 预订义变量 $?
最终一遍施行的下令的归来状态。若是这几个变量的值为0,注解上一个指令正…

linux汉语支持,唯有正确安装的中文字体和华语语系
-假如有图形界面,能够精确援救粤语展现。
-假若选用第1方远程工具,只要语系设置科学,能够协助普通话显示。
-如若纯字符分界面,必须利用第一方插件。

双分段if条件语句

if [ 条件判断式 ]
    then
         ...
    else
        ...
fi

双分支if条件语句

if [ 条件判断式 ]
    then
         ...
    else
        ...
fi

职责参数变量:
$n
功能:n为数字,$0代表命令本身,$1-$9表示第一到第13个参数,10之上的参数要求用大括号包蕴,如${十}
$* 效能:代表命令行中全部的参数,$*把富有的参数作为1个完完全全。
$@ 效能:代表命令行中全体的参数,$@把每一个参数区分对待
$# 成效:代表命令行中全体参数的个数。
例子:

澳门金沙国际 ,认清nginx 是还是不是在运营 (最棒不用富含nginx作为文件名)

#!/bin/bash
result=$(ps aux | grep nginx | grep -v grep)

if [ -n "$result" ]
        then
                echo "$(date) nginx is ok !"
        else
                echo "$(date) nginx is not ok !"

                sudo /etc/init.d/nginx start &>/dev/null
                echo "$(date) restart nginx !!"
fi

判别nginx 是不是在运作 (最佳不用饱含nginx作为文件名)

#!/bin/bash
result=$(ps aux | grep nginx | grep -v grep)

if [ -n "$result" ]
        then
                echo "$(date) nginx is ok !"
        else
                echo "$(date) nginx is not ok !"

                sudo /etc/init.d/nginx start &>/dev/null
                echo "$(date) restart nginx !!"
fi

!/bin/bash

num1=$1
num2=$2
sum=$(($num1+$num2))#变量sum的和是num1+num2
echo $sum # 打字与印刷变量sum的值
./canshu1.sh 11 22
$0 $1 $2

预约义变量
$?
最后三次试行的指令的归来状态。若这么些变量的值为0,注解上1个发令正确施行。反之,未精确实行。
$$ 当前进度的进度号(PID)
$! 后台运行的最后3个进程的长河号(PID)

吸收键盘输入
read [选项] [变量名]
选项:
-p “提示新闻”:在伺机read输入时,输出提示音讯。
-t 秒数:read命令会从来等待用户输入,可钦定等待时间。
-n 字符数:read命令只接受钦命的字符数,就会奉行。
-s:隐藏输入的数码,使用于机密消息的输入

shell运算符
declare 命令
格式:declare [+/-] [选项] 变量名
-:给变量设定类型属性
+:裁撤变量的门类属性
-a:将变量申明为数组
-i:将变量证明为整数型(integer)
-x:将变量注明为情形变量
-r:将变量申明为只读变量
-p:呈现内定变量的被声称的品种
一、变量证明为数值型

多分支if语句

if []
    then 
elif []
    then
...
else 
   ...
if

多分支if语句

if []
    then 
elif []
    then
...
else 
   ...
if

给变量aa和bb赋值

aa=11
bb=22

宣称变量cc的类别是整数型,它的值是aa和bb的和

declare -i cc=$aa+$bb

二、证明数组变量

概念数组

movie[0]=aaa
movie[1]=bbb
declare -a movie[2]=ccc

翻开数组

echo ${movie}
echo ${movie[2]}
echo ${movie[*]}

三、评释遭受变量
declare -x test=123

和export效率相识,但export其实是declare命令的功能

四、注解变量只读属性
declare -r test

给test赋予只读属性,可是请留心只读属性会让变量不能够改改、无法去除,乃至不可能撤销只读属性

五、查询变量的品质
declare -p #询问全数变量的习性
declare -p 变量名 #询问内定变量的属性

数值运算格局
方式1:declare形式
方式2:

给变量aa和bb赋值

aa=11
bb=22

dd的值是aa和bb的和,注意”+”号左右两侧必须有空格

dd=$(expr $aa + $bb)
方式3:“$((运算式))” 或 “$[运算式]”

给变量aa和bb赋值

aa=11
bb=22
ff=$(($aa + $bb))
gg=$[$aa + $bb]
运算符表达:同编制程序语言运算符基本1致,有优先级,可透过小括号来更改。
变量测试:特殊的款型,一般不用。如:x=${y-新值}

相关文章