linux shell学习笔记2(变量和参数)

    技术2024-10-17  60

    1.在赋值的前后一定不要有空格,否则系统会将变量当作命令来运行

       如果:  "VARIABLE =value"

       脚本将尝试运行一个"VARIABLE"的命令,带着一个" =value"参数

     

    2.   hello="A B   C    D"

          echo $hello  # A B C D             使用变量替换,空格被过滤掉了

          echo "$hello" # A B   C    D      使用引用变量,能够保留其中的空格

          echo '$hello'   # $hello             使用单引号全引用,会将$作为符号输出,相当于"/$hello"

     

    3.  unset 将一个变量设为空

         空值变量做算术运算,相当于0

     

    4.  = 赋值,使用let赋值

         a=879

         echo "The value of /"a/" is $a"

     

         let a=16+5

         echo "The value of /"a/" is now $a"

     

         a='ls -l'

         echo $a      #ls-l 空的部分(包括换行)被去除了

         echo "$a"   #引用正常,输出合适结果

     

         使用$(...)机制进行变量赋值,跟' '的作用类似

         R=$(cat  /etc/redhat-release)

         arch=$(uname -m)

     

    5.  Bash变量不对类型进行区分,本质上Bash变量都是字符串

         a=2334

         let "a+=1"

         echo "a=$a"                #a=2335

     

         b=${a/23/BB}             #将23替换成BB

         echo  "b=$b"               #b=BB35

     

         let "b+=1"

         echo  "b=$b"               #b=1

     

    6.  特殊变量类型

         local  variables

         enviornental   variables  环境变量

         position  parametres   $0, $1, $2 ...

         $0就是脚本文件的文字,$1就是第1个参数,$2第二个参数...

         $9以上就要用大括号:

         ${10},${11},${12}

         $*,$@,表示所有的位置参数

     

    7.  basename命令去掉一个路径名(文件名)的目录部分和后缀部分,只保留文件名:

         例如:

         basename /usr/bin/sort   #sort

         basename include/stdio.h .h  #stdio

     

    8.  args=$#    #获得参数个数

         lastarg=${!args}   #获得最后一个参数

     

         #或 lastarg=${!#} 但 lastarg=${!$#}会报错

     

    9.  shift命令,将参数的顺序左移

         $1<-$2<-$3...

         但脚本名$0不变

     

    最新回复(0)