Linux中bash编制程序

By admin in 美高梅手机版4858 on 2019年4月17日

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变量
一.什么是变量
变量是Computer内存的单元,当中存放的值能够退换。
变量命名规则:字母或下划线发轫,可由字母、数字和下划线组成。
长度不能够赶上251个字符。变量名在使得限制内务必唯1。在bash中,变量的私下认可类型都以字符型。
变量安装存款和储蓄数据分类,字符串型、整型、浮点型、日期型
变量在“系统内”分类:
用户自定义变量。即:变量是自定义的。
环境变量:首要保存和种类操作环境相关的数额。可自定义,但对系统生效的环境变量名和变量成效是原则性的。
Linux中bash编制程序。职位参数变量:主要用以向脚本当中传递参数或数额。变量名不能够自定义,变量功能是一定的。
预订义变量:是bash中已定义好的变量,变量名无法自定义,变量功用固定的。

预订义变量
        $?
最终3回进行的一声令下的归来状态。借使那几个变量的值为0,申明上三个指令正确的实践;倘使这么些变量重临的值非0(具体是分外数,有指令本身来支配),则证实上1个下令实施不得法。
        $$当前进程的长河号(PID)
        $!后台运维的末段二个进程的经过号(PID)
  运算符
        declare 声名变量的门类  
        declare [+/-][选项] 变量名
        – 给变量设定类型属性
        + 打消变量的种类属性
        -i 将变量声名称为整数型
        -x将变量什注脚为环境变量
        -p 呈现钦赐变量的被声名的花色

预订义变量
        $?
最后二次施行的指令的回来状态。借使这几个变量的值为0,证明上三个发令正确的施行;借使那么些变量重临的值非0(具体是十三分数,有指令本身来决定),则表达上3个命令实践不科学。
        $$当前历程的长河号(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
    TEGL450M:终端环境
    HISTSIZE:历史命令条数
    SSH_CLIENT:当前操作环境是用ssh连接的,那里记录客户端ip
    SSH_TTY:ssh连接的极端时pts/一
    USECRUISER:当前登入用户
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_美高梅手机版4858 ,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

判断登6用户是还是不是为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编制程序 预约义变量 $?
最终3回进行的指令的归来状态。假设那一个变量的值为0,表明上一个发令正…

linux汉语帮助,唯有正确安装的中文字体和国语语系
-要是有图形分界面,能够正确支持汉语显示。
-假诺利用第3方远程工具,只要语系设置科学,能够支撑中文呈现。
-假如纯字符分界面,必须选用第一方插件。

双分层if条件语句

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

双拨出if条件语句

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

位置参数变量:
$n
效率:n为数字,$0代表命令自身,$1-$九表示首先到第7个参数,拾之上的参数要求用大括号包涵,如${10}
$* 效用:代表命令行中全体的参数,$*把持有的参数作为三个①体化。
$@ 成效:代表命令行中全体的参数,$@把种种参数区分对待
$# 作用:代表命令行中全数参数的个数。
例子:

判断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,注脚上二个限令正确实践。反之,未正确实践。
$$ 当前进度的历程号(PID)
$! 后台运维的尾声一个历程的进度号(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[*]}

3、注明环境变量
declare -x test=123

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

四、证明变量只读属性
declare -r test

给test赋予只读属性,但是请留意只读属性会让变量不可能修改、不能去除,甚至无法撤除只读属性

5、查询变量的性质
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]
运算符表明:同编制程序语言运算符基本一致,有优先级,可经过小括号来改换。
变量测试:特殊的样式,一般不用。如:x=${y-新值}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有