精华内容
下载资源
问答
  • Linux Shell 变量自加

    2017-11-21 11:02:13
    Linux Shell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。 我所知道的,bash中,目前有五种方法: 1. i=`expr $i + 1`; 2. let i+=1; 3. ((i++)); 4. i=$[$i+1]; 5. i=$(( $i
    declare -i iv=$svnv
    let iv+=1


    shell中变量自增的实现方法


    Linux Shell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。
    我所知道的,bash中,目前有五种方法:
    1. i=`expr $i + 1`;
    2. let i+=1;
    3. ((i++));
    4. i=$[$i+1];
    5. i=$(( $i + 1 ))
    可以实践一下,简单的实例如下:


    #!/bin/bash
    i=0;
    while [ $i -lt 4 ];
    do
       echo $i;
       i=`expr $i + 1`;
       # let i+=1;
       # ((i++));
       # i=$[$i+1];
       # i=$(( $i + 1 ))
    done


    另外,对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;实例如下:


    #!/bin/bash
    for j in $(seq 1 5)
    do
      echo $j
    done


    =================================================================================
    Linux Bash Shell学习(十五):变量类型和整型运算


    本文也即《Learning the bash Shell》3rd Edition的第六章Command-Line Options and Typed varilables之读书笔记之二,但我们将不限于此。
      在之前,我们涉及的变量基本上是字符串,也有整数,例如便是参数个数的$#。我们可以使用declare来制定变量的属性。
    变量类型定义
    declare –a name :表示数组array。
    declare –f name :表示是function的名字。
    declare –F name :同上,但只显示function的名字。这个和上面的具体差异不太明白,但是这两者都很少使用,先不理会它们。
    declare –i name :表示整数
    declare –r name :表示只读。不能使用unset。对于只读变量,也可以使用readonly name 的方式,相当于declare –r name 。readonly可以带三个选项:-f表示这是个function的名字,-p表示打印所有的readonly的名字,-a表示这是个只读的数组。
    declare –x name :同export,即不仅在当前的环境中起作用,也在外部的shell环境中起作用。
    整型运算
      我们可以通过declare -i来定义整型变量。在上一次的学习中,使用了$(($OPTIND - 1))来进行计算$((…))是用于进行整型运算的。在$((…))中,我们并不需要对变量加上$来表示它的值,也不需要预先声明这个变量是个整型。在双引号下也能进行有效运算。下面是个例子:
    #declare -i aa=13 
    aa=13 
    echo '$((aa-3))'=$((aa-3)) 
    echo '$(($aa-3))'=$(($aa-3)) 
    #date显示日期,date +%j表示今天是年度的第几天,$(command)表示其显示结果 
    echo "Only $(( (365-$(date +%j)) / 7 )) weeks until the New Year"
      前面两个echo得到的值都是10,我们也不需要预先声明aa是个整数,因为$((…))已经表明是整型的运算,会自动将字符变为整数。
    运算类型和C语言一样。也支持$((x += 2))的格式,包括下面几种操作。在下面的例子中我们引用了上面aa=13。
    ++ :$((aa++))为13,并将aa赋值为14,注意使用$(($aa++))会报错,无法解析13++的含义,所以为了简洁并且不产生错误,不在运算式中加入$,如果是$((++aa))为14,并将aa赋值为14,这与C语言是一样的。
    -- :$((aa--))为13,并将aa赋值为12,如果是$((--aa))为12,并将aa赋值为12。
    +
    -
    *
    /
    %:求余:$((aa%5))=3
    **:这个在C语言中是没有的,表示Exponentiation,即取幂。例如上面例子中$(($aa**3))相当于13*13*13=2197
    <<
    >>
    &
    |
    ~
    !
    ^
      还支持逻辑运算,包括<, >, <=, >=,==,!=,&&,||, 这些也与C语言一样。例如$((3>1))为1。这和命令运行return 0表示真是不一样的。一个是逻辑运算的结果,一个是exit status。例如上面$((3>1))为1,逻辑计算结果为1,而执行结果的 exit status为0。这两个概念需要区分。
      我们在http://blog.csdn.net/flowingflying/archive/2009/12/22/5069646.aspx 中给出同[ … ]进行条件判断的方式,这里>,<,=等符号是用于判断字符串的,表示用于比较数字的,在[ … ]中,如果对数字进行比较,需要使用-lt, –gt, –le, –ge, –eq, –ne 。使用[ … ],例如if [ 3 –gt 20 ]; then,条件不成立,但是[ 3 > 20 ],则成立,因为此刻比较的是字符串。所以这是很容易引起混淆的。如果需要表达比较复杂,例如[ /( 3 -gt 2 /) || /( 4 -le 1 /) ]是不太好阅读的。我们需要强调一点:在if [ condition ]; then中,shell对于function或者command是已0来表示成功,因此if也是判断是否为0,这和$(())的数学逻辑运算是不一样的。对于上面的例子,可以使用if [ $(((3 > 2) && (4 <= 1))) = 1 ] ,前面(((3 > 2) && (4 <= 1))) 运算结构为1,然后进行[ str1 = str2 ]的比较,判断是否成立。这样写仍然很麻烦,以及使用if  (((3 > 2) && (4 <= 1))) ,即((…)) 的方式表示。
    对于数学运算的赋值,使用$((...))有时显的比较繁复,可以使用let,格式如下:
    let intvar =expression
      let表示expression是个数学运算,无须使用$(())来作进一步表明,这样的赋值方式简洁很多。 等号前后是没有空格的,在expression的表达式中也是没有空格的,如果有空格必须用引号引起来,可以是单引号,也可以是双引号,let x=1+4;let x='1 + 4';let x="1 + 4",这三个同样都是给x赋值为5。下面是一个例子,获取指定目录的所占大小空间:
    function test1 

        echo "test1 ${*}" 
        for dir in ${*:-.}; do 
            if [ -e $dir ]; then 
                # du - estimate file space usage,返回block数目 
                result=$(du -s $dir | cut -f 1) 
                let total=$result*1024 
                echo -n "Total for $dir = $total bytes" 
                if [ $total -ge 1048576 ]; then 
                    echo " ($((total/1048576)) Mb )" 
                elif [ $total -ge 1024 ]; then 
                    echo " ($((total/1024)) Kb )" 
                fi 
            fi 
        done 
    }
      下面是一个较大的例子,使用这本书一直在用的pushd和popd的例子。进行了一些功能加强。当pushnd +n时,将第N个元素移到最上面,并进入该目录,如果没有参数,将最上的两个元素交换,并进入交换后最top的目录,否则安原pushd的处理方式进行处理。如果popnd +n,则将第N个元素从stack中删除,其他的同popd的处理。
    #获取在stack中第N的参数,从0开始计算,并将前N的存放stackfront,后N的存放在stack中 
    function getNdirs 

        echo getNdirs $@ 
        stackfront='' 
        let count=0 
        #通过数学计算和数字判度,可以向C那样进行次数的控制,由于for是用于列表元素,所以使用while,循环之后,stackfront存储前N个entry,含N,stack则存贮后面的元素。而target存贮第N个元素 
        while [ $count -le $1 ] && [ -n "$stack" ]; do 
            # target为stack中最top level的entry,含后面的空格 
            target=${stack%${stack#* }} 
            # 将最top的entry存放在stackfront的后面    
            stackfront="$stackfront$target" 
            # stack为取出最top entry后的值 
            stack=${stack#$target} 
            let count=count+1 
        done 
        # 将第N个元素重复从stackfont中移出,则stackfont存贮N之前的元素 
        stackfront=${stackfront%$target} 
    }




    # 当pushnd +n时,将第N个元素移到最上面,并进入该目录,如果没有参数,将最上的两个元素交换,并进入交换后最top的目录,否则安pushd的处理方式进行处理。 
    function pushnd 

        echo 
        echo pushnd $@ 
        #检查如果是pushnd +n的情况,需要将地N个元素移到最上方    
        if [ $(echo $1 | grep '^+[0-9][0-9]*$') ]; then 
            # 将参数1,去除+,获取n 
            let num=${1#+} 
            getNdirs $num 
            stack="$target$stackfront$stack" 
            cd $target 
        elif [ -z "$1" ]; then 
        # case of pushnd without args; swap top two directories 
            firstdir=${stack%% *} 
            stack=${stack#* } 
            seconddir=${stack%% *} 
            stack=${stack#* } 
            stack="$seconddir $firstdir $stack" 
            cd $seconddir 
        else 
        # normal case of pushd dirname 
            dirname=$1 
            # -a等同于 && 
            if [ /( -d $dirname /) -a /( -x $dirname /) ]; then 
                stack="$dirname ${stack:-$PWD" "}" 
                cd $dirname 
            fi 
        fi 
        echo "stack=$stack" 
        echo "directory=$PWD" 



    # 如果popnd +n,则将第N个元素从stack中删除,其他的同popd的处理 
    function popnd 

        echo 
        echo popnd $@ 


        if [ $(echo $1 | grep '^+[0-9][0-9]*$') ]; then 
        # case of popd +n: delete n-th directory from stack 
            let num=${1#+} 
            getNdirs $num 
            stack="$stackfront$stack" 
    #      cd ${stack%% *} 
         else 
            if [ -n "$stack" ]; then 
                stack=${stack#* } 
                if [ -n "$stack" ]; then 
                    cd ${stack%% *} 
                else 
                    echo "stack becomes empty." 
                fi 
            else 
                echo "stack already empty." 
            fi 
        fi 
        echo "stack=$stack" 
        echo "directory=$PWD" 



    pushnd /home 
    pushnd /etc 
    pushnd /home/wei/mywork 
    pushnd +3 
    pushnd 
    pushnd +1 
    popnd +3 
    popnd 
    popnd 
    popnd
    for的应用
      我们希望for和C或者JAVA那样使用,这样在数组的情况下非常方便,格式为:
    for (( initialisation ; ending condition ; update )) 
    do 
            statements ... 
    done
      如果使用for((;;)) 泽则表示一个无限循环,在statements中可以用break来退出循环。下面是一个九九乘法表的例子:
    for (( i=1; i <= 9 ; i++ )) 
    do 
            for (( j=1 ; j <= 9 ; j++ )) 
            do 
                    echo -ne "$(( j * i ))/t" 
            done 
            echo 
    done
    展开全文
  • 转载:http://c.biancheng.net/cpp/view/6999.html ...1.定义变量时,变量名不美元($)符号 2.变量名和等号之间不能有空格 3.变量名的命令遵循如下规则:  首个字符必须为字母(a-z / A-Z)

    转载自:http://c.biancheng.net/cpp/view/6999.html


    #######################################################


    定义变量


    1.定义变量时,变量名不加美元($)符号

    2.变量名和等号之间不能有空格

    3.变量名的命令遵循如下规则:

     首个字符必须为字母(a-z / A-Z)

     中间不能有空格,可以使用下划线

     不能使用标点符号

     不能使用Bash里的关键字(可使用help命令查看保留关键字


    使用变量


    使用一个定义过的变量,只需在变量名前加上$号即可

    变量名外的花括号可选,加花括号是为了帮助解释器识别变量的边界

    (note that:推荐给变量名加花括号)


    只读变量


    使用readonly命令可以讲变量定义为只读变量,只读变量的值不能被改变

    #定义变量
    # C="hello world"
    #声明为只读变量
    # readonly C

    删除变量


    使用unset命令可以删除变量

    (unset命令不能删除只读变量)


    ############################################################


    变量类型


    运行Shell时,会同时存在3种变量:

    局部变量:局部变量在脚本或命令中定义,仅在当前Shell实例中有用,其他Shell启动的程序不能访问局部变量

    环境变量:所有的程序,包括Shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候Shell脚本也可以定义环境变量

    Shell变量:Shell变量是由Shell设置的特殊变量。Shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了Shell的正常运行

    展开全文
  • 1.shell变量声明 1.进入编辑vim 1.sh 2.#!/bin/bash 3.权限 chmod u+x 1.sh 4./bin/bash 1.sh 6.声明变量 7.自定义变量 a="hello world"; #引用命令返回值变量,注释用 # riqi=~date~; echo $riqi; 输出了日期...
    1.shell 之变量声明

    1.进入编辑vim 1.sh
    2.#!/bin/bash
    3.加权限 chmod u+x 1.sh
    4./bin/bash 1.sh
    6.声明变量
    7.自定义变量 a="hello world";
    #引用命令返回值变量,注释用 #

    riqi=~date~;
    echo $riqi;
    

    输出了日期

    2.定时任务 ,输入crontab --help 查看帮助命令

    9.编辑crontab -e 定时
    10.删除crontab -r

    11.*/1 * * * * ls /home 时分月周等
    12.邮件放置 var/mail/

    3.数据库定期备份

    1.cd /mysql/bin
    2.备份数据库

     ./bin/mysqldump -uroot -p123456 -B ddd >/usr/local/mysql/ddd.sql
     ./bin/mysqldump -uroot -h127.0.0.1 -p123456 -B ddd >/usr/local/mysql/ddd.sql
    

    3, 备份 mysql 表

    ./bin/mysqldump -uroot -h127.0.0.1 -p ddd users > /usr/local/mysql/users.sql
    
    4.自动备份

    1.进入该路径cd /php/linux/
    2.进入编辑vim bak.sh

    #!/bin/bash
    riqi=·date +%Y%m%; ·此符号是esc下的那个·
    /usr/local/mysql/bin/mysqldump -uroot -h127.0.0.1 -p123456 ddd > /usr/local/mysql/$riqi.sql
    

    3.查看是否成功 cd /usr/local/mysql

    tar zcf $riqi.tar.gz ./$riqi.sql
    
    rm -rf $riqi.sql
    

    4.修改权限 chmod u+x bak.sh

    ./bak.sh
    
    crontab -e
    
    */1 * * * * /bin/bash /php/linux/bak.sh > /dev/null
    

    crontab -l 执行
    ls /usr/local/mysql/
    mkdir /data/

    展开全文
  • shell变量

    2018-08-11 21:46:55
    http://www.runoob.com/linux/linux-shell-variable.html   Shell 变量 定义变量时,变量名不美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格...

    转自:

    http://www.runoob.com/linux/linux-shell-variable.html

     

    Shell 变量

    定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

    your_name="runoob.com"

    注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

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

    有效的 Shell 变量名示例如下:

    RUNOOB
    LD_LIBRARY_PATH
    _var
    var2

    无效的变量命名:

    ?var=123
    user*name=runoob

    除了显式地直接赋值,还可以用语句给变量赋值,如:

    for file in `ls /etc`
    或
    for file in $(ls /etc)

    以上语句将 /etc 下目录的文件名循环出来。


    使用变量

    使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

    your_name="qinjx"
    echo $your_name
    echo ${your_name}

    变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

    for skill in Ada Coffe Action Java; do
        echo "I am good at ${skill}Script"
    done

    如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

    推荐给所有变量加上花括号,这是个好的编程习惯。

    已定义的变量,可以被重新定义,如:

    your_name="tom"
    echo $your_name
    your_name="alibaba"
    echo $your_name

    这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。

    只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

    下面的例子尝试更改只读变量,结果报错:

    #!/bin/bash
    myUrl="http://www.google.com"
    readonly myUrl
    myUrl="http://www.runoob.com"

    运行脚本,结果如下:

    /bin/sh: NAME: This variable is read only.

    删除变量

    使用 unset 命令可以删除变量。语法:

    unset variable_name

    变量被删除后不能再次使用。unset 命令不能删除只读变量。

    实例

    #!/bin/sh
    myUrl="http://www.runoob.com"
    unset myUrl
    echo $myUrl

    以上实例执行将没有任何输出。

    变量类型

    运行shell时,会同时存在三种变量:

    • 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
    • 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    • 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    Shell 字符串

    字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

    单引号

    str='this is a string'

    单引号字符串的限制:

    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

    双引号

    your_name='runoob'
    str="Hello, I know you are \"$your_name\"! \n"
    echo $str
    Hello, I know you are "runoob"! 

    输出结果为:

    双引号的优点:

    • 双引号里可以有变量
    • 双引号里可以出现转义字符

    拼接字符串

    your_name="runoob"
    # 使用双引号拼接
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting  $greeting_1
    # 使用单引号拼接
    greeting_2='hello, '$your_name' !'
    greeting_3='hello, ${your_name} !'
    echo $greeting_2  $greeting_3

    输出结果为:

    hello, runoob ! hello, runoob !
    hello, runoob ! hello, ${your_name} !

    获取字符串长度

    string="abcd"
    echo ${#string} #输出 4

    提取子字符串

    以下实例从字符串第 2 个字符开始截取 4 个字符:

    string="runoob is a great site"
    echo ${string:1:4} # 输出 unoo

    查找子字符串

    查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):

    string="runoob is a great site"
    echo `expr index "$string" io`  # 输出 4

    注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。


    Shell 数组

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

    类似与 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

    定义数组

    在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

    数组名=(值1 值2 ... 值n)

    例如:

    array_name=(value0 value1 value2 value3)

    或者

    array_name=(
    value0
    value1
    value2
    value3
    )

    还可以单独定义数组的各个分量:

    array_name[0]=value0
    array_name[1]=value1
    array_name[n]=valuen

    可以不使用连续的下标,而且下标的范围没有限制。

    读取数组

    读取数组元素值的一般格式是:

    ${数组名[下标]}

    例如:

    valuen=${array_name[n]}

    使用 @ 符号可以获取数组中的所有元素,例如:

    echo ${array_name[@]}

    获取数组的长度

    获取数组长度的方法与获取字符串长度的方法相同,例如:

    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得数组单个元素的长度
    lengthn=${#array_name[n]}

    Shell 注释

    以"#"开头的行就是注释,会被解释器忽略。

    sh里没有多行注释,只能每一行加一个#号。只能像这样:

    #--------------------------------------------
    # 这是一个注释
    # author:菜鸟教程
    # site:www.runoob.com
    # slogan:学的不仅是技术,更是梦想!
    #--------------------------------------------
    ##### 用户配置区 开始 #####
    #
    #
    # 这里可以添加脚本描述信息
    # 
    #
    ##### 用户配置区 结束  #####

    如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?

    每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

    多行注释

    多行注释还可以使用以下格式:

    :<<EOF
    注释内容...
    注释内容...
    注释内容...
    EOF

    EOF 也可以使用其他符号:

    :<<'
    注释内容...
    注释内容...
    注释内容...
    '
    
    :<<!
    注释内容...
    注释内容...
    注释内容...
    !

     Shell 教程

    Shell 传递参数 

     

    5 篇笔记

    1.    su226

        136***1939@qq.com

         参考地址

      Linux 的字符串截取很有用。有八种方法。

      假设有变量 var=http://www.aaa.com/123.htm

      1. # 号截取,删除左边字符,保留右边字符。

      echo ${var#*//}

      其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

      即删除 http://

      结果是 :www.aaa.com/123.htm

      2. ## 号截取,删除左边字符,保留右边字符。

      echo ${var##*/}

      ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

      即删除 http://www.aaa.com/

      结果是 123.htm

      3. %号截取,删除右边字符,保留左边字符

      echo ${var%/*}

      %/* 表示从右边开始,删除第一个 / 号及右边的字符

      结果是:http://www.aaa.com

      4. %% 号截取,删除右边字符,保留左边字符

      echo ${var%%/*}

      %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符

      结果是:http:

      5. 从左边第几个字符开始,及字符的个数

      echo ${var:0:5}

      其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

      结果是:http:

      6. 从左边第几个字符开始,一直到结束。

      echo ${var:7}

      其中的 7 表示左边第8个字符开始,一直到结束。

      结果是 :www.aaa.com/123.htm

      7. 从右边第几个字符开始,及字符的个数

      echo ${var:0-7:3}

      其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

      结果是:123

      8. 从右边第几个字符开始,一直到结束。

      echo ${var:0-7}

      表示从右边第七个字符开始,一直到结束。

      结果是:123.htm

      注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

      su226

         su226

        136***1939@qq.com

         参考地址

      1年前 (2017-04-23)
    2.    wenxin667

        140***2918@qq.com

      @su226

      描述的有点儿不容易懂,看了好久才勉强明白 # ## % %%。

      #、## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。

      %、%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符。

      删除包括了指定的字符本身。

      wenxin667

         wenxin667

        140***2918@qq.com

      12个月前 (08-24)
    3.    amau

        1@1***t

      #!bin/bash
      #author:amau
      
      var="http://www.runoob.com/linux/linux-shell-variable.html"
      
      s1=${var%%t*}
      s2=${var%t*}
      s3=${var%%.*}
      s4=${var#*/}
      s5=${var##*/}
      echo "关于字符串的截取%,#的使用方法" echo "原字符串为:"${var} echo "%%t*的效果:"${s1} echo "%t*的效果:"${s2} echo "%%.*的效果:"${s3} echo "#*/的效果:"${s4} echo "##*/的效果:"${s5}

      运行结果:

      关于字符串的截取%,#的使用方法
      原字符串为:http://www.runoob.com/linux/linux-shell-variable.html
      %%t*的效果:h
      %t*的效果:http://www.runoob.com/linux/linux-shell-variable.h
      %%.*的效果:http://www
      #*/的效果:/www.runoob.com/linux/linux-shell-variable.html
      ##*/的效果:linux-shell-variable.html
      amau

         amau

        1@1***t

      8个月前 (12-14)
    4.    墓志铭

        muz***ing_zbq@163.com

      计算字符长度也可是使用 length:

      string="hello,everyone my name is xiaoming"
      expr length "$string"

      输出:34

      注意:string字符串里边有空格,所以需要添加双引号

      使用 expr 命令时,表达式中的运算符左右必须包含空格,如果不包含空格,将会输出表达式本身:

      expr 5+6    // 直接输出 5+6
      expr 5 + 6       // 输出 11

      对于某些运算符,还需要我们使用符号"\"进行转义,否则就会提示语法错误。

      expr 5 * 6       // 输出错误
      expr 5 \* 6      // 输出30
      墓志铭

         墓志铭

        muz***ing_zbq@163.com

      6个月前 (01-30)
    5.    cc

        242***0286@qq.com

         参考地址

      read 命令用于获取键盘输入信息

      它的语法形式一般是:
      read [-options] [variable...]

      以下实例读取键盘输入的内容并将其赋值给shell变量,为:-p 参数由于设置提示信息:

      read -p "input a val:" a    #获取键盘输入的 a 变量数字
      read -p "input b val:" b    #获取键盘输入的 b 变量数字
      r=$[a+b]                    #计算a+b的结果 赋值给r  不能有空格
      echo "result = ${r}"        #输出显示结果 r

      测试结果:

      input a val:1
      input b val:2
      result = 3
    展开全文
  • shell 变量

    2020-08-03 10:04:26
    变量 shell编程中分为两种变量 ...我们在自定义变量时,使用了双引号,在shell编程中, 如果变量出现空格或者引号,那么也必须引号, 否则就可以省略。还有一点需要注意,定义变量的时候,“=”左右千万不要有空.
  • printenv 或者 env 查看当前环境变量 printenv HOME 或者 env HOME (注意不$符) echo $HOME ($符号) set 显示所有的环境变量(全局,局部,用户自定义) 局部变量 *自己定义的局部变量小写(避免重新定义...
  • shell 自加

    2019-01-28 15:22:00
    LinuxShell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。我所知道的,bash中,目前有五种方法:1. i=`expr $i + 1`;2. let i+=1;3. ((i++));4. i=$[$i+1];5. i=$(( $i + 1 ))可以实践一下,...
  • 8.1 shell介绍 每个用户都有自己bash /bin/bash if for while循环 ,特定语法 8.2 命令历史 按向上的方向键查看之前的命令,存放在用户的家目录下 root都存放载这个文件里/root/.bash_history ...
  • 1.认识GUN/bash shell 梳理清楚硬件,内核及模块,shell之间的关系;熟悉GUN的bash以及bash shell的功能;学习shell的通配符 2.shell变量 变量的设置,取用以及取消方法,变量的设置规则;...自加自减;...
  • linux shell 数学运算

    2018-12-10 20:46:57
    1. Bash shell中使用let、(())、[]执行基本的算术操作,工具expr... 自加操作let no1++  自减操作let no2--  简写形式let no+=6 或者 let no-=6 2. 几种写法:result=$[ no1+no2 ] 操作符[]作用和let一样 ...
  • gawk中也可以自己定义一些变量,在使用变量的时候不需要美元符号。比如在gawk中定义并打印字符串: gawk 'BEGIN{str="Wu lin wai zhuan";print str}' 运行后输出结果为: Wu lin wai zhuan gawk中也可以使用数学...
  • shell学习之变量

    2020-07-26 19:05:47
    shell的变量是base环境下很重要的东西,举个例子,在...中间不能空格,这就生成了一个shell变量,在举例子之前,我们先介绍一个东西:echo ,这个是显示变量内容的命令,用法如下: echo $变量名 这下我们就可以
  • 1. 脚本是一个包含一系列命令序列的文本文件,当运行...3. Shell脚本允许用户设置和使用自己的变量变量可以使数字或者字符串,用户无需指定其类型,也无需在使用前定义。 注:(1)定义时无需"$" (2)赋值“...
  • linux shell - 2

    2010-07-03 16:36:21
     要注意的一点是,在定义变量时,变量名前不应符号“$”,在引用变量的内容时则应在变量名前“$”;在给变量赋值时,等号两边一定不能留空 格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。 ...
  • Linux Shell 编程小记

    2010-03-04 11:19:00
    1、变量要说的只是一个简单的小错误:变量赋值时不要'$'符号,引用的时候才需要,否则Shell会把'='左边替换成变量的实际内容;2、函数函数必需在使用它之前定义,所以,Shell脚本一般都将函数的定义放在脚本的...
  • 这三个命令都可以用来显示shell变量 env:显示所有的环境变量 set:显示所有本地定义的shell变量 export:把一个变量变作环境变量。export不参数的时候,显示哪些变量被导出成了用户变量,一个shell自己的变量...
  • 测试好的脚本放到 crontab 里就报错: 找不到命令 写好一个脚本,测试没有问题,...自己在shell命令行下测试的时候当前环境变量就是这个用户的环境变量,可以通过命令:env 看到,脚本放到crontab 里面后一般都了su...
  • bash shell环境中,可以使用let 、(()) 、[]执行基本的算术运算,而在进行高级操作时,也可以用expr、bc两个工具 ...自加自减操作 let no1++ let no2-- 简写形式 let no1+=6 (2)[]使用方法与let相似 result=$...
  • 2.自加自减操作 let no1++ let no1– 3.自加自减简写形式 let no+=6 let no-=6 expr result=$(expr $no1 + 5) 将文本保存到文件中 ①echo “This is sample text 1” > temp.txt 保存...
  • 在Bash shell环境中,可以利用let、(( ))和[ ]来执行基本的算术操作。而高级的算术操作可以使用expr和bc...自加操作:let no1++; let no+=6; 自减操作:let no2–; let no-=4; 自加自减 其他方法 [ ]使用和l...
  • 不想要后缀,命令文件就不要后缀。 c语言 在/usr/local/bin 下添加一个文件 custom-command-c.c(当前也可以使用环境变量PATH的方式,来配置使用此命令,不赘述) ,内容如下: #include<stdio.h> int ...
  • 通过Shell进行数学运算 一、let let命令可以直接执行基本的算数运算操作。 当使用let时,变量名之前不...#自加操作 let no1++ #自减操作 let no1-- #简写形式 let no1+=6 let no1-=6 转载于:https://www...
  • 在定义变量的时候 = 前面后面都不要空格,了空格就表格变量是有空格的,不像 java C# 等其他语言一样,会自动删除空格; 变量的引用$名字 或者 ${} 都可以 #!/bin/sh varCURPATH=$(pwd) if [ ! -d "IMG" ]...
  • 学习shell中的运算符及逻辑运算,各种结构,各种注意事项已经学疯了,还好shell中有双括号的存在,安利一下。...2.在双括号里面变量可以不 $符号 3.可以像其他逻辑运算符号一进行逻辑运算 四则运算 4.支持for...
  • Linux笔记 shell脚本

    2017-07-10 17:00:41
    创建局部的变量 不能空格 下面的写法将会报错 下面这个也是空格的问题 执行后: 只有一个i就没有问题了 有空格就会有问题 2 字符串相关 双引号“” 再次执行后 自动解析字符串拼接 执行...
  • LINUX and SHELL 自学总结

    2012-04-19 15:51:13
    六、LINUX SHELL其它 9 1. VI使用 9 2. 算术运算符 9 3. 字符串比较 10 4 字符串表达式(判断条件命令IF) 10 5. #SLEEP等待 10 6. #TEE执行结果复制保存 10 七、数组生成方法 10 1. #SEQ方法生成 10 2. 通过内部{...
  • 5. 此脚本实现的是寻找指定位置参数的用户是否登录,内部实现命令为用who命令列出登录的用户信息(w命令的输出结果过于繁杂,无特殊要求不用)了一个if语句保证传递过来的位置参数变量唯一,传递两个用户名将会...
  • 当前shell的进程号。你可以使用ps -A 看你自己shell 的pid。...后台运行的最后一个进程的进程ID号$@与$#相同,但是使用时引号,并在引号中返回每个参数$-显示shell使用的当前选项,与set命令功能相同$?显示最...
  •  1.bc 命令的用法(可以整数也可以小数): ... 例: 给自变量 i 1    [root@docker Demo_test]# i=2  [root@docker Demo_test]# i=`echo $i+1|bc`  [root@docker Demo_test]# ech...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 150
精华内容 60
关键字:

linuxshell变量自加

linux 订阅