码迷,mamicode.com
首页 > 其他好文 > 详细

bash编程基础及for循环

时间:2014-12-07 06:43:09      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:变量   for循环   基础   bash编程   

bash编程要点

变量

本地变量:只对当前shell进程有效,对当前shell之外的其它shell(包括其父、子等)无效;

环境变量:对当shell进程及其子shell进程有效;

局部变量:仅在当前shell进程中的某段代码空间内有效;通常用于函数本地程序;

位置变量:$1, $2, ...

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数…

 

特殊变量:

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$@ 是传给脚本的所有参数的列表

$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

$$ 是脚本运行的当前进程ID号

$? 是显示最后命令的退出状态,0表示执行成功,其他表示执行失败

变量的引用

    ${变量名}:{}可以省略,简写为$变量名

    引号在变量引用中的作用

        “”:双引号,弱引用,会显示变量所表示的值;

           

        ‘’:单引号,强引用,显示引号内的内容,不会显示变量的值;

            a=1; echo ‘$a’的结果则为$a

        ``:反引号,命令引用,命令替换,会将引号中命令的执行结果引用;作用同$(COMMAND)

            a=`echo1`,echo $a;结果则为1,将echo 1的结果赋值给a,即a=1

声明变量

    整形变量的声明:

let VAR_NAME=VALUE

        declare-i VAR_NAME=VALUE

    环境变量的声明:

        exportVAR_NAME=VALUE

        declare-x VAR_NAME=VALUE

脚本的格式:

    第一行写明解释器,即这个脚本运行是用哪个解释器来解释,例如#!/bin/bash,则使用bash来解释脚本运行,必须第一行顶格写。

    其他以#号开头的行均为解释,解释器会自动略过,不会执行

脚本的运行

    使用chmod +x 脚本名 赋予脚本执行权限,指明路径运行

    直接传递脚本给bash解释器运行,其中

        -n:测试脚本中是否有语法错误

        -x:将脚本执行的每一步都显示到终端上,以便调试脚本

脚本中的算数运算

    $[算数运算式]

    let脚本名=算数运算式

    $((算数运算式))

    $(exprargu1 argu2 argu3)

脚本的流程控制

    for循环

    格式:

        for 变量 in 列表 ;do

            循环体

        done

    变量在列表中依次取值并将值带进循环体中,列表中的值取尽,则循环执行完毕,循环次数即是列表中值的个数。

    列表:包含至少一个元素的字符串集合

(1)  直接给出

(2)  数值列表:{start..end}, 例如:{1..10}

    seq LAST:从1到LAST,每隔1取一个值,{seq 3} 表示{1,2,3}

    seq FIRST LAST:从FIRST到LAST,每隔1取一个值

    seq FIRST STEP LAST:从FIRST到LAST,每隔STEP取一个值;{seq 2 2 10}表示{2,4,6,8,10}

                (3)  可用是命令执行结果的列表,使用反引号。

for循环实例

计算1-100之内的所有偶数的和

#!/bin/bash
declare -i  sum=0
for i in `seq 2 2 100`;do
        sum=$[$sum+$i]
done
echo $sum

for循环的特殊情况

    (1)for省略,会自动获取脚本参数列表;

    (2)C编程风格:        

for((变量赋值;循环条件;修正表达式)); do
                CMD1
                CMD2
            done

    (3) 循环嵌套:外层循环执行一次,内层循环执行完毕之后再开始执行外层循环,外层循环执行一次,内层循环可能执行多次。          

 fori in [LIST1]; do
                CMD1
                forj in [LIST2]; do
                    CMD2
                    ...
                done
            done

for循环进阶实例

    打印99乘法表

#!/bin/bash
for i in {1..9};do
        for j in `seq $i`;do
        num=$[$i*$j]
        echo -e -n "$[j]x$[i]=$num\t"
        done
        echo
done

bubuko.com,布布扣

 

 

 

 

 

 

 

 

 

 

 

 

 


本文出自 “linux学习之路” 博客,请务必保留此出处http://linuxu.blog.51cto.com/9471357/1587178

bash编程基础及for循环

标签:变量   for循环   基础   bash编程   

原文地址:http://linuxu.blog.51cto.com/9471357/1587178

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!