精华内容
下载资源
问答
  • bash编程 万次阅读
    2020-10-11 15:44:17

    #####   
    ##变量定义
        =两边不能空格,如果内容有空格,需要使?单引号或者双引号
        x="1 2"
        echo $x   # 1 2
        x=1 2  # 报错
        双引号持转义 $开头的变量会被动替换(单引号不行)
        echo "1 2 $x"    # 1 2 1 2
        
        echo $'\n'输出换行
        echo $((1+3))  # 4
        echo $((3/2))  # 1  取整
        awk BEGIN'{print 1/3}'
    0.333333
        布尔值:
        当程序正常执行后:echo $?  得到 0   $?为执行命令返回值
        当程序不正常执行后:echo $?  得到 2
        0为true  其他都为false
        算术判断:
        [2 -eq 2] equality相等
        [2 -ne 2] 不相等
        [2 -gt 2] great than大于
        [2 -ge 2] great equality
        [2 -le 2] less equality
        字符串却可以 == != 比较
        
        &&与 ||或有些不支持 所以用 -a与  -r或
        
        [ -e 1.txt ] # 判断文件是否存在,需要打印ehco $? 来看
        -d:是否是子目录
        -f:是否是一个普通文件
        if [ -e 2.txt ];then echo is exit;else echo not exit;fi
    is exit
        if [-e 2.txt];then echo is exit;else echo not exit;fi #[要有空格]不然出错
    -bash: [-e: command not found
    not exit
        for i in 1 2 3 4;
    > do echo $i;
    > done
    1
    2
    3
    4
        for f in *.txt;do wc -l $f;done
    2 1.txt
    32 2.txt
        for i in $(seq 1 3 10);do echo $i;done
    1
    4
    7
    10
        while read line;do echo line=$line;done < 2.txt
        
    ##写脚本
        注释号是:#
        函数的书写
        f(){
    > wc -l *.txt
    > }
        type f #可以查看函数
        f # 执行函数
        f(){ echo p1=$1; echo p2=$2; echo p3=$*; echo p4=$#; echo p5=${#*}; }
        f a b c d e f g h  # 传参数
    p1=a
    p2=b
    p3=a b c d e f g h
    p4=8
    p5=8
        f(){
    > wc -l $@  # $@是要传进来的参数
    > }
        bash 1.sh 1.txt # bash是执行1.sh文件 1.txt是传进去的参数
        chmod +x 1.sh  添加权限,给所有都加x权限
        ./1.sh *.txt 也可以执行
        bash -x 1.sh *.txt # 会有调试过程
        #!/bin/bash 脚本文件顶行,提示用哪个程序去执行当下脚本,有这一句即使不是.sh结尾的文件,也会是.sh文件来执行
        a=123
        echo ${a}_1  # 会打印123_1
        echo $bsk  # 即使bsk还没被定义也不会报错
        which python  # 可以查看python安装在那里
        export PATH=$PATH:$PWD  加环境变量的办法这样就可以which 1.sh了
        arry=(1 2 3)
        echo ${arry[@]}  # 这样才能完整打印数组@改为*也是可以的习惯用@
        echo ${#arry[*]}  # 得到数组的长度 3 
        echo ${arry[0]}     # 1    索引从0开始的 -1最后一项
        ``:反引号,就是把里面返回的内容拿出来`ls`=$(ls) 拿到返回的文件名
        arry=(`ls`) 
        每条命令使用;隔开
        echo -e a\nbb   # -e就是开启转移模式,\n看作是换行
        (()):用作计算$((a+b))=$(($a+$b)) 用作比较(($a<$b)) echo $?
        seq 1 10 # 1 2 3 4 5 6 7 8 9 10
        arry=(`seq 1 10`)
        s="hello from your friend"
        echo ${s:6:7;}  # 索引6开始取后面7个
        echo ${s#hello} # from your friend  把hello去掉
        echo "${s#hello}" #   from your friend  把hello去掉,from前的空格保留
        echo "${s#*o}"  #  from your friend
        echo "${s##*o}"   # ur friend  贪婪匹配
        echo "${s%f*}"  # hello from your 去尾  %%也是贪婪
        echo ${s/friend/son}  # hello from your son 
        false和[ 3 -eq 2 ]   看一下echo $?  # 1
        []、(())里面可以用>= <= ! =这些符号
        [ -n "$b"]  # 判断字符串b不是空 返回0
        [ -z "$b"]  # 判断字符串b是空 返回0
        [ a -eq b -a a -ge 5 ]   -a是与的意思  或是-o
        [[ a -eq b && a -ge 5 ]] 这样也行  ||或  推荐用[]
        [ ! 2 -ge 1]  # 2不大于等于1
        ls -l = ll  
        ls dir && echo exist || echo not exist # 如果文件夹存在,打印出现,不然打印not exist 
        echo 1 && echo 2 || echo 3 && echo 4 || echo 5 # 1 2 4
        因为||若||前面为真||后面就不执行了

    更多相关内容
  • 资源名称:Linux Bash编程与脚本应用实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • bash:Bash编程

    2021-03-16 17:32:11
    模块化Bash编程。 Repositori ini berisi slide dan code。 Pertemuan 1 幻灯片: 代码: Pertemuan 4 幻灯片: 代码: Pertemuan 5 幻灯片: 代码: Pertemuan 6 幻灯片: 代码: Pertemuan 7 幻灯片: ...
  • 高级Bash编程

    2016-03-12 14:25:58
    高级Bash编程
  • Bash编程语法

    万次阅读 2021-09-28 00:02:09
    1.变量 规则:a.变量命名只能是英文字母,数字,下划线组成,...不能使用bash内置的关键字(可使用help命令查看保留的关键字) 定义变量:name="chuntian" 只读变量:readonly name 使用变量:$name 删除...

     使用visual studio code连接远程机器:

    Shell语法中,面向过程,不面向对象;非高级编程语言,属于脚本语言,尽量用“”双引号,不要用‘’单引号。

    1.变量

            1.1规则:a.变量命名只能是英文字母,数字,下划线组成,首字符不能为数字;

                    b.中间不能有空格,可以是下划线;

                    c.不能使用标点符号;

                    d.不能使用bash内置的关键字(可使用help命令查看保留的关键字)

            定义变量:name="chuntian"

            只读变量:readonly name

            使用变量:$name

            删除变量:unset name(对只读变量无效)

            1.2如果想把一个命令的输出保存到一个变量,使用: 变量名=$(命令) 的方式。         

                    注意:$(( ))2个括号代表数值运算;

                               $( ) 1个括号代表命令执行;

            1.3升级全局变量

            .sh结尾的文件中如果使用了$var来引用局部变量,不会生效,可以使用export关键字将局部变量升级为全局变量:

             1.4 .bashrc文件:全局环境文件

                    命令行中的export只能将变量设置为当前程序(进程)的全局变量,无法在其他进程中使用该变量,可以在~/.bashrc隐藏文件中使用export设置变量,这样就所有的进程,所有地方,所有shell窗口中都能使用该变量:

                    source .bashrc 生效 

     调用变量的方式:“${var_name}”

     env :查看系统的环境变量(同windows中的PATH命令)

     $?:获取前一条命令执行结果,0代表成功,非0代表失败 

     算数运算:$(( 1+1 )) 等效于 "$(expr 1 \+ 1)"

            注意:$(( ))2个括号代表数值运算;

                       $( ) 1个括号代表命令执行;

     2.字符串操作

            str_name="chuntian"

            拼接字符串:greeting="hello,"$str_name""

     3.数组操作

            定义数组:array_name=()

                    单独赋值:array_name[n]=valuen 

                    取数组元素:value_n=${array_name[n]}

    条件表达式条件表达式成功,返回0,不成功,返回非0.

            [ 1 = 1 ] 两边必须有空格,等同[ 1 == 1 ]

    逻辑表达式:&& (python中的and),||(python中的or)

    文件表达式:

            -f 判断输入内容是否是一个文件

            -d 判断输入内容是否是一个目录

            -x 判断输入内容是否可执行

            -e 判断文件是否存在。

    Shell 脚本的宏定义:

            #!/bin/bash :代表用bash这个shell执行脚本代码 

    4.if条件控制:

            if [ condition1 ]

            then 

                    command1

            elif [ condition2 ]

            then

                    command2

                    .......

            else

                    commandn

            fi

             举例:    if [ a==b ];then echo "true";else echo "false";fi

                            if [[ a>b ]];then echo "a大于b";else echo "a小于b";fi

                            tips:当if后面条件判断为>或者<时,判断条件需要用2个[]包裹,

                                   即[[condition]]

            if [ $a -eq $b ];then echo ""$a" equal "$b"";elif [ $a -lt $b ];then echo ""$a" less than "$a"";elif [ $a -gt $b ];then echo ""$a" bigger than "$b"";fi

            tips:注意各个字符间都必须要有空格,还有尽量都使用双引号,可以不考虑单双引号交替.

    5.for 循环

       格式1:

            for var in item1 item2....itemN

            do

                    command1

                    command2

                    ........

                    commandN

            done

       格式2:

            max=10

            for ((i=1;i<=max;i++))

            do

                    echo "${i}"

            done

            for loop in 1 2 3 4 5;do echo "I love chuntian"$loop""

             读取文件,循环打印

    6.while 循环

            while condition

            do

                    command

            done

             举例:注意比较while read i;do echo $i;done<tt.txt

                            和for i in $(cat tt.txt);do echo $i;done的区别

             此处应比较for i in $(cat tt.txt);do echo $i;done会将文件内的空格算作一行

                   脚本:

            执行结果:

     case:

    #!/bin/bash
    #Author:chuntian_Tester
    #Date:2020-02-02
    #test while loop
    
    if [ ! $# -eq 3 ];then
        echo -e "Usage:\n $0 num1 +|-|*|/ num2"
        exit 1
    fi
    
    case $2 in
        +)
            echo "$1 +$3 = $(($1 + $3 ))"
            ;;
        -)
            echo "$1 +$3 = $(($1 - $3 ))"
            ;;
        \*)
            echo "$1 +$3 = $(($1 * $3 ))"
            ;;
        /)
            echo "$1 +$3 = $(($1 / $3 ))"
            ;;
        *)
            echo "$2 can not calculate"
    esac
    
    exit 0

    效果:

     

     

     

    7.函数

            格式1: 函数名(){ 函数体 }

            格式2: function 函数名{ 函数体 }

             函数传参:

                read -p "请输入用户名:"  username 等同于python中的username=input("请输入用户名")

    展开全文
  • 高级bash编程

    2015-09-08 11:00:17
    高级bash编程的一本好书,适合linux编程脚本学习,书中讲的很详细
  • 不能使用bash里的关键字(可用help 命令查看保留关键字) 2、变量的定义与使用 your_name = 'anna' #定义变量 echo $your_name 输出变量 设置只读变量: a = '123456' readonly a #将变量a设为只读变量,只读...

    变量

    控制语句

    if

    for

    while

    1、变量的语法规则

    • 命名只能使用英文字母、数字、下划线,首字符不能以数字开头
    • 中间不能有空格、可以使用下划线(_)
    • 不能使用标点符号
    • 不能使用bash里的关键字(可用help 命令查看保留关键字)

    2、变量的定义与使用

    your_name = 'anna'  #定义变量

    echo $your_name   输出变量

    设置只读变量:

    a = '123456'

    readonly a     #将变量a设为只读变量,只读变量不能被修改和删除

    删除变量

    unset  变量名

    练习1

     

    3、变量的基本类型

    • 字符串:your_name='anna'
    • 拼接字符串:greeting = 'hello,'$your_name'!'
    • 数组 array_name = (value0 value1 value2 value3)
    •  取数组 valuen = ${array_nmae[n]}#n为取数组第几个值,n为*或@取数组全部的值。
    • 单独赋值 array_name[0]=value0

    练习2

    4、控制语句(if、for循环)

    if语句:

    if condition

    then

       command1

       command2

    ....

       commandn

    fi


    举例说明:

    if [2==2];then echo "true"; else echo "false"; fi
    if[[2>1]];then echo "true"; else echo "false"; fi #大于或小于要用两个中括号,也可以用-gt表示大于、-lt表示小于。

    练习3

    比较两个变量的大小并输出不同的值:

     

    for循环:

     for var in item1 item2 ...itemN

    do

        command1

        command2

    ....

        commandN

    done

     

    练习4

     while循环:

    while condition

    do

       command

    done 


    举例说明:

    int=1
    while(($int<=5)
    do
      echo $int
      let "int++"
    done

     

     

    练习5

     

     

    展开全文
  • Bash编程.pdf

    2014-06-11 20:12:18
    Bash编程.pdf
  • Linux Bash 编程与脚本应用实战-高清-完整目录-2015年1月
  • bash 编程Windows系统 电脑资料 Bash编程 一Bash特殊字符 1通配符 *匹配任何字符串 ?匹配任何单个字符 集合运算符用一些单个字一个连续范围或断续的字符集合作为通配符 [set]用字符集合作通配符匹配单个字符如[aeiou...
  • bash编程学习

    千次阅读 2018-05-19 23:48:17
    先简单写一点,以后在整理 记性不好,看完就忘… sh bash脚本编程调试 当我们写c或其他程序时,都有调试这一技能,调试可以说是很重要的了…能节约你的时间,shell脚本也有调试… 两种方式–执行时添加参数 脚本里添加...

    先简单写一点,以后在整理
    记性不好,看完就忘…

    sh bash脚本编程调试

    当我们写c或其他程序时,都有调试这一技能,调试可以说是很重要的了…能节约你的时间,shell脚本也有调试…
    两种方式–执行时添加参数 脚本里添加参数

    参数含义
    -n不执行脚本,仅检查是否有语法错误
    -v执行脚本前,把脚本内容输出到屏幕
    -x将执行时的内容输出到屏幕
    • 执行时添加

    假如现在要执行的脚本叫做test.sh,那么
    bash -n test.sh可以检查脚本语法是否有错,无错误没有任何输出,echo $?可以得0.同理,其他的参数也一样.
    另外这些参数可以组合使用–但是,当加入n后,脚本就不会执行了,所以-nxx将不会起作用…

    • 脚本里添加

    脚本第一行一般都是

    #!/bin/bash
    ...#脚本内容
    ...
    

    这种指定哪个解释器执行脚本的语句,这样,参数可以跟在后面:

    #!/bin/bash -n
    ...#脚本内容
    ...
    

    这样就可以检查语法错误了
    另外还可以针对某一段执行,如:

    #!/bin/bash
    
    ...#段1
    ...
    set -n#开始检查语法
    ...#段2
    ...
    set +n#停止检查
    

    这样就可以只针对段2检查语法错误,-n开始,+n停止,另外的x,v也是一样

    运算符

    今天看脚本把&& ||和c里面的逻辑运算符混了…

    符号意义
    cmd1&&cmd2cmd1执行成功(返回0),cmd2才执行
    cmd1||cmd2cmd1执行成功(返回0),cmd2不执行

    这里说的返回0,是一个环境变量$?,总之不能跟逻辑与或混了…
    bash支持的运算符如下:

    • 数学运算符
    • 关系运算符
    • 布尔运算符
    • 逻辑运算符
    • 字符串运算符
    • 文件测试运算符

    变量

    命令意义
    read从键盘读取变量值
    array数组
    declare声明变量类型
    echo $var查看变量内容
    unset $var取消设定变量
    set查看所有变量
    export var将自定义变量变为环境变量,也就是子程序可以调用此变量了 注1

    注1:source或.执行脚本即当前shell执行,不是在子程序里执行,可以做到立即生效的作用
    比较有用的几个环境变量:

    变量意义
    HOME代表用户的家目录
    SHELL目前正在使用的shell
    PATH可执行文件搜索路径
    LANG语言变量
    RANDOM随机数变量
    PS1提示字符的设定
    $本shell 的 PID
    ?上个执行指令的回传值
    OSTYPE, HOSTTYPE, MACHTYPE操作系统、主机、机器类型

    关于变量内容的操作

    形式意义
    ${vat#str}从变量首开始删除,找最短符合删除
    ${vat##str}从变量首开始删除,找最长符合删除
    ${vat%str}从变量尾开始删除,找最短符合删除
    ${vat%%str}从变量尾开始删除,找最长符合删除
    ${var/oldstr/newstr}找到的第一个被替换
    ${var//oldstr/newstr}找到的全部被替换
    var=${str-expr}变量未定义赋值,否则将str赋给var
    var=${str:-expr}变量未定义或为空赋值,否则将str赋给var
    var=${str+expr}变量若定义则赋值,否则将str赋给var
    var=${str:+expr}变量非空赋值,否则将str赋给var
    var=${str=expr}若变量str未定义,设定变量str,将值赋给str和var,否则将str赋给var
    var=${str:=expr}变量未定义或为空,将值赋给str和var,否则将str赋给var
    var=${str?expr}变量不存在报错,否则将str赋给var
    var=${str:?expr}变量不存在或为空报错,否则将str赋给var

    一些有用的管道命令

    命令意义
    cut使用某种格式从文件中截取每一行中的某一字段
    grep利用正则表达式分析一行数据
    sort根据制定格式对行排序
    uniq去重
    wc统计相关字、行、字符数
    tee双向重导向,可以重定向输出到文件的同时依旧输出到屏幕
    tr文字替换
    coltab替换为空格
    jion归并两个文件中相同的部分
    paste将两个文件贴在一起,以tab分隔
    expandtab转空格
    split分隔文件
    xargs参数代换
    sed流编辑,可直接编辑文件;添加多行时要以\分隔;替换: sed 's/要被取代的字符串/新的字符串/g'多用于以行为单位的处理
    printf格式化打印
    awk字段处理
    diff比较文件差异
    cmp对比文件(以字节为单位)
    patch根据diff修订文件
    pr显示时加入标题页码

    :

    • awk 的指令间隔:所有 awk 的动作,亦即在 {} 内的动作,如果有需要多个指令辅助时,可利用分号;间隔, 或者直接以 [Enter]
      按键来隔开每个指令
    • 逻辑运算当中,如果出现是否等于的情况,则务必使用两个等号==
    • 格式化输出时,在 printf 的格式设定当中,务必加上 \n ,才能进行分行!
    • 与 bash shell 的变量不同,在 awk 当中,变量可以直接使用,不需加上 $ 符号。

    脚本编写

    test命令 与判断符号 [ ]

    注意:判断符号里面都要有两个空格分隔如[空格-e filename空格]
    判断符有以下特点:

    1. 在中括号 [] 内的每个组件都需要有空格键来分隔;
    2. 在中括号内的变量,最好都以双引号括号起来;
    3. 在中括号内的常量,最好都以单或双引号括号起来;

    条件判断

    原型:

     if[ expr1];then
     ...
     elseif[expr2];then
     ...
     elseif[exprn];then
     ...
     else
     ...
     fi
    

    原型

    case $var in
    	变量内容1)
    	...
    	;;
    	变量内容2)
    	...
    	;;
    	*)
    	...
    	;;
    easc
    

    最后的*)相当于switch里的default

    循环

    原型:

    while [ condition ]
    do
    程序段落
    done
    

    until [ condition ]
    do
    程序段落
    done
    

    for var in con1 con2 con3 ...
    do
    程序段
    done 
    #作为循环选取,可使用`$(seq 1 100)`或bash内建的{1..100}来完成1
    #到100序列,字母也可以如{a..g}
    

    for (( 初始值; 限制值; 执行步阶 ))
    do
    程序段
    done
    

    分号

    在Linux bash shell中,语句中的分号一般用作代码块标识
    比如

    if [ -f requirements.txt ]; then echo ok; fi
    

    if [ -f requirements.txt ]
    then echo ok;
    fi
    

    效果是一样的。如果你在shell里面按行依次输入命令,然后查看命令历史,看到的也是一行的以分号分割的命令。

    展开全文
  • Shell编程中if 、if ..else 、if..elif..elif..else、while、until、case..in语句的用法
  • 高级Bash脚本编程指南高级Bash脚本编程指南.pdf高级Bash脚本编程指南.pdf
  • 《高级 Bash 脚本编程指南》是一本广受好评的 Bash 脚本编程著作,原作者是 Mendel...它全面且系统地讲解了bash编程的语法、习惯用法。由浅入深,非常详细,也有很多具体的案例,现在已经更新到第十版(Rerision 10)。
  • Linux bash 编程

    2017-10-18 22:03:44
    终止case选项(双分号) 使用双分号(;;)可以终止case选项。 $ vim test3.sh 输入如下代码,并保存。 #!/bin/bash varname=b case "$varname" in [a-z]) echo "abc";; [0-9]) echo "123";...$ bash test3
  • code_quizzer, 使用 ruby JavaScript Rails 和Bash编程实践问题 CodeQuizzes关于站点在 ,Rails,JavaScript,Bash,git中包含一系列编程实践问题。 等等 !当我学习编程并决定创建CodeQuizzes作为我的第一个 Rails ...
  • bash编程指南 pdf

    2010-03-15 23:44:10
    bash编程指南 前言 本文译自《Slackware Linux Unleashed》(第三版)一书的 bash 一章,但做了一些 必要的删节,并且有的地方根据实际情况作了较大的改动,必要的话请参考原文。对本文有 任何问题的话请与我联系:...
  • 这个存储库包含一些如何安装终端的程序和我的 Bash 编程语言项目和示例。 谢谢你,Teşekkürler :grinning_face_with_smiling_eyes:
  • 高级Bash 脚本编程指南.pdf高清版
  • Bash编程】之 协作进程coproc

    千次阅读 2019-03-04 19:10:40
    shell中的协作进程coprocess是指一个shell命令的前面添加了coproc关键字的情形,这个命令是在子shell中异步执行的,就好像在命令的末尾使用了后台命令控制符“&amp;”一样,不同的是,协作进程与其父进程间有...
  • 高级BASH编程

    2014-07-21 23:02:20
    高级BASH编程
  • linux下bash编程

    2014-09-15 14:23:04
    在linux下进行bash编程来维护系统 是linux运维手册 shell编程
  • Bash编程指南

    2014-09-25 14:40:33
    Bash编程指南,完整的Bash编程工具,内容介绍很详细
  • #!/bin/bash declare -i I=1 declare -i SUM=0 until [ $I -gt 100 ]; do let SUM+=$I let I++ done echo $SUM

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,055
精华内容 51,222
关键字:

bash编程

友情链接: utzybhx.rar