Linux Shell之echo,变量

来源:互联网 发布:数据库系统的构成 编辑:程序博客网 时间:2024/04/30 10:57

Linux Shell之echo,变量

 

本文通过一些简单的demo来学习两种 Linux Shell 在终端echo打印信息的方式并简单介绍了shell变量的概念。

由于目前本人学识有限,可能理解和总结并不全面,如有错误或不足,敬请指正补充,不吝赐教。

 

echo

 输出转义字符

 

闲来无事,用shell写了个打印九九乘法口诀0.0,所以就以此小例子来学习,

顺便学习一点shell的简单例子。

可以清楚看出述输出结果中,因为乘法表从5*2=10因为进十位多占一个字符,导致下面层与前面几层没有实现对齐,然而这对于强迫症患者来说可能是受不了的哈哈,那么问题来了如何使之对齐呢,高级语言中有转义字符来解决这个问题,而shell中也能使用转义字符。所以可以运用转义字符“\t”使之对齐,试了好多遍发现并没什么用,后来才发现与高级语言还是有略微不同,在shell 中echo语句 不可直接识别转义字符。

具体解决办法如下图。


 

 

对没错就是这样

 

完美解决。

 

Note:

1)#!/bin/bash  这个是告诉系统 解释此脚本文件的Shell程序

# 这个是注释行,当行有效

脚本程序一般用 xx.sh 文件表示,这样一样就可以看出文件的属性,当然也可以不这样

一个脚本程序写完后,如果要执行它,则必须先赋+x  执行权限给它

例如:chmod +x xx.sh,然后用命令 ./filename  执行

另外一种方式是直接运行解释器,其参数就是shell脚本的文件名,如:

/bin/sh test.sh

/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

2let :用来执行算数运算和数值表达式测试。

3)read:用于获取用户输入的字符

4)dodone:则代表高级语言里的左右大括号即{}


 

 

另外还有许多同学都对echo后面的几种括号区分了解得不是很清晰。

下面顺便扩展一下echo后面的输出方式的知识。


echo 共有 4 种输出方式:

1.        直接在 echo 后面跟要输出的信息:


note
1
)shell 是一种解析语言,即不需要编译而直接按行读取并解析执行的程序语言。
2)shell 以分号 “ ;” 为指令执行的终止分隔符,因此在执行代码的第二行我们看到了 “;”后面的信息 “Nice to meet you"被解析成下一条要执行的指令,

并且报错 “Nice :command not found”

3)shell里面引用变量时使用 "$" 符号,由于HOME 是系统环境变量,因此 $HOME 被解析输出成它的值。
4)echo 默认每次从新的一行输出信息。

 

2.        echo  后面使用双引号输出信息:


note
1)
因为在第2行内无其他像 $, '', `和\以之类的特殊字符字符,””内的内容都被输出了,

2)但如果双引号呢有$, '', `和\以之类的字符,则不被解释成字符本身

可以看到在双引号中,$被作为特殊字符处理,HOME被解释为变量。

 

 

3.        echo 后面使用单引号输出信息:


echo 使用单引号输出信息时,变量是不会被展开的,即把变量符号直接当成字符串输出,而不是把变量符号展开表示成它的值输出。即单引号中所有的字符包括特殊字符($,'',`和\)都将解释成字符本身而成为普通字符。

 

 

4.         echo 后面使用反引号输出信息:


note:在反引号中的字符串将解释成shell命令来执行。所以第2行内字符串无法被识别导致报错,而第3行为正确shell命令,date被正确输出。

 

echo总结:

Linux Shell中有三种引号,分别为双引号("")、单引号('')以及反引号(` `)。

其中双引号对字符串中出现的$、''、`和\进行替换;单引号不进行替换,将字符串中所有字符作为普通字符输出,而反引号中字符串作为shell命令执行,并返回执行结果。

简单来说具体含义如下:

双引号(""):在双引号中,除了$,'', `和\以外所有的字符都解释成字符本身。

单引号(' '):在单引号中所有的字符包括特殊字符($,'',`和\)都将解释成字符本身而成为普通字符。

反引号(` `):在反引号中的字符串将解释成shell命令来执行。

 

Shell中的变量种类:局部变量和全局变量

    局部变量是在函数中用local 声明的变量:他的作用域是在函数调用开始到函数结束。

    全局变量 在shell脚本下声明的变量,他的作用域是整个shell的生存周期内。shell结束,全局变量的周期也结束。

echo "在函数外调用 局部变量 var2="$var2

echo "调用全局变量2  var1="$var1

补充:环境变量、位置变量、标准变量、特殊变量等

    环境变量:用于所有的用户进程,可以看成是windows下的环境变量,用export定义:

Example:export YourName="YXW",

可以用env或export查看系统环境变量并可以用unset释放变量

unset variable_name。

位置变量:就是调用函数时候的参数.

标准变量:就是bash环境建立的一些标准环境的标量,他会自动去解析,基本都在/etc/profile中定义了有EXINIT,HOME,IFS,LOGNAME,MAIL,MAILCHECK等(引用网上资料)

    特殊变量:$# 参数个数,$* 列出所有参数,$!显示后天脚本的进程Id ,$$显示当成脚本的进程id,$? 最后命令退出的状态,0 表示正常;


 

4 0
原创粉丝点击