shell编程入门

 

变量引用的三种方式:

         ① $variable

         ② ${variable}

         ③“$variable”或“${variable}”

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

  1. for action in Reading Writing Changing

  2. do

  3. echo "I am good at ${action}Book"

  4. done

如果不给action变量加花括号,写成echo "I am good at $actionBook",解释器就会把$actionBook当成一个变量(其值为空)

单引号、双引号
       ⑴ 单引号、双引号和反引号之间,从功能上可以分为两类:
            ① 引用字符串:单引号、双引号

            ② 命令替换:反引号

       ⑵ 讲讲单、双引号的功能和他两之间的区别:
            ① 功能:单引号和双引号都是引用字符串用的。他两中的命令都是不执行的,只作为字符的存在。

            ② 区别:

                在双引号中,有些元字符是可以保留它的功能的,可以有含义的进行解释,而不是作为一个普通字符,这是双引号和单引号最大的区别。单引号中,不会有任何特殊符号的存在,所有的元字符,命令统统都是一个普通字符。双引号可以解释部分元字符,让它保留其原来的功能。

      ⑶  下面举个例子来讲解一下,比如:
        命令:echo “((n=60+60))”

        输出:((n=60+60))

            解释:首先((…))是一个命令,let数值计算命令的简写点击打开链接(注意和test命令的区分:点击打开链接)

            分析:直接输出((60)),说明这个命令在双引号中并没有执行(当然在单引号中也肯定不会执行),为什么?

                      因为双引号中的字符都是一个普通字符。

        问题来了:有没有办法让字符串中的有特别含义的东西,比如“命令”这些可以正常执行呢?

       ⑷ 双引号中特殊元字符

            前面已经说了,双引号中的某些元字符是能够保留它的功能的,这种设计,使字符串中可以引用命令的结果。

            那么双引号中的哪些字符是解释的呢,可以保留其原本含义的呢?

                    ① 转义符号:\

                    ② 变量引用、命令替换:$   (点击打开链接)

                    ③ 反引号: `  (键盘“Esc”键下面的一个键)

         如果我想正常输出这些在双引号中可以解释的元字符,使其作为一个普通字符;但是这个字符串中又有我想要的待解释命令(不能用单引号的原因),应该怎么办呢?双引号中的转义字符是解释的,可以使用转义符号来输出某个单个特殊符号。

反引号作用于命令替换。

        命令替换的目的是获取命令的输出,为变量赋值,或对命令的输出做进一步处理。

     反引号的作用和“$( )”是一样的。

 

 

export命令:将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
source命令:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
原理:

执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;
一个shell中的系统环境变量才会被复制到子 shell中(用export定义的变量);
一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失 (并不能返回到父shell中)。
不用export定义的变量只对该shell有效,对子shell也是无效的。
通常把环境变量放在开发板的/etc/profile文件里面

export log=4
在其他脚本中直接引用,前面加上环境变量路径  source /etc/profile

可以直接在命令行输入export log=4进行修改

符号$后的括号区别
(1)${a} 变量a的值, 在不引起歧义的情况下可以省略大括号。

(2)$(cmd) 命令替换,和`cmd`效果相同,结果为shell命令cmd的输出,过某些Shell版本不支持$()形式的命令替换, 如tcsh。

(3)$((expression)) 和`exprexpression`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值