您的位置:首页 > 运维架构 > Shell

十.Shell编程之变量

2016-04-26 09:24 288 查看
shell编程之变量:

自定义变量

环境变量

参数变量

...

自定义变量:

格式:变量名=变量值

如果变量值中有空格,需要用双引号将其引起来;

其“=”左右都不能有空格

变量调用:

格式:$变量名

在shell中每个变量的值都是属于字符串

创建环境变量:

格式:export 变量名=变量值

Bash中的内置命令:

set:表示查看所有的系统变量

env:表示只查看所有的环境变量

help:查看内置命令的列表

help 命令名:查看某个命令的作用

help -d 命令名:显示命令的简要功能介绍

help -s 命令名:显示命令的简要的语法格式

help -m 命令名:显示命令的手册页

Linux系统中的外部命令:

which 命令名:可以查看该命令的路径

有些命令既是外部命令也是内部命令,例如:echo,内部命令要高于外部命令

命令名 --help:查看某个外部命令的用法。注:如果该命令即是内部命令又是外部命令,我们要查看其外部命令的用法:格式:该命令路径 --help 例如:/bin/echo --help

wc 文件名:查看文件内容的行数、单词数、字节数

wc -w 文件名:查看文件内容的单词数

添加某个目录到PATH下方式:例如:PATH="$PATH:/tmp/bin"

3.2.3设置和取消别名命令alias和unalias

是什么?为什么需要用它?怎么用它?

alias:就是设置别名命令

例如我们经常要进入到某个目录下。但该目录的路径有点长,不方便,那我们就可以将该目录完整路径设置成别名,下次进入该目录或文件中,直接输别名即可

设置别名命令格式:alias 别名='cd 该目录或文件的完整路径'

执行:别名

eg:$ alias myaa='cd /tmp/aa/bb/cc/dd'

$ myaa

***查看Linux系统中默认的别名:

$ alias -p

unalias:取消别名命令

取消别名命令格式:$ unalias 别名

3.5编写并运行第一个脚本

在shell脚本(Bash)中:

进入Bash脚本:vim 文件名(一般以.sh为后缀);执行bash脚本:bash(或source) 文件名

1.#!/bin/bash 表示为此脚本的解释程序

2.# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释

3.如果变量值是有空格的额,就必须要用双引号引起来,才能原样输出

4.变量名=变量值,即给变量名赋值时,“=”左右两边不能空格;

5.在shell脚本中,所有的变量值都是输出字符串形式;例如:a1=123;b1=456;c1=$a1+$b1;执行结果:123+456;

6.变量的命名规则:只能由字母、下划线和数字组成,其中数字不能开头

7.变量的调用(即想要获取某个变量的值):$变量名

8.输出某个变量值:用echo命令;

**注意:

eg:echo I like bash 输出结果:I like bash

echo "I like bash" I like bash

echo 'I like bash' I like bash

echo "\"I like bash\"" "I like bash"

aa=I like bash

echo $aa -->会报错,因为带有空格的变量值必须用引号引起来

aa="I like bash"

echo $aa --> I like bash

bb='I like bash'

echo $bb --> I like bash

9.在Bash中,单引号和双引号的区别:

单引号不识别$符号,只把它当做正常的$符号;

双引号会识别$符号,会把它当做调用某个变量的值;

不加任何引号的$符号,也是会把它当做调用某个变量的值

eg:aa=123

cc='$a';echo $cc 结果:$a

dd="$a";echo $dd 123

ee=$a;echo $ee 123

注意:

在Bash中如果有转义字符的,一定要加-e参数,不然有的转义字符不能被识别 eg:echo -e "hello\tworld" 结果:hello world(如果没有加-e,结果:hello\tworld)

在Linux终端界面中可以不用加-e参数,其转义字符可以自动别识别的。

3.6命令解释顺序与命令类型的查询 ??????

**3.6.1命令的解释顺序

Bash的命令解释顺序: alias→keyword→function→built-in→$PATH 即,一旦出现重名的命令,那么优先级由高到低,依次是:别名→关键字→函数→内置命

令→外部命令。

**3.6.2改变命令解释顺序的三条内置命令Bash提供的三条内置命令可以改变命令的处理顺序。 1)command <命令>,忽略别名和函数,按照内置命令和外部

命令来处理。 2)builtin <命令>,只查找内置命令,忽略函数和外部命令。 3)enable,禁用或使能内置命令。

eg:alias pwd="This is a alias pwd"

pwd
结果:This is a alias pwd

command pwd /home/shiyanlou

**3.6.3命令类型的查询

查询某个命令是别名(alias)、关键字(keyword)、函数(function)、内置命令(builtin)和外部命令(file):

格式:type -t 命令名

为什么在终端上执行此命令,是没有呢??????

3.7命令的退出状态以及命令true和false

在一个命令或程序结束之后,都会返回一个退出状态。状态值范围为0到255,0表示成功执行,非零均表示失败,其中127表示未找到命令,内置变量$?存储着上一条命令

的退出状态

eg:$ date

$ echo $? 结果:0 表示date命令运行成功

eg:$ dateee

$ echo $? 结果:127 表示dateee命令不存在,找不到该命令

Bash有两个特殊的内置命令:true和false。命令true的返回结果永远是成功,命令false的返回结果永远是失败。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: