从零开始写shell脚本(2)--变量

shell中的变量

常见的编程语言都有变量这一元素,变量通常用来保存一些数据或者方法,在shell里也有两种类型的变量:
1. 系统变量–Linux 自身创建并且维护的一组变量,变量名都是大写字母
2. 用户自定义变量(UDV) –用户自己定义的变量,小写字母

在bash中输入set 可以看到系统变量 ,如果太多的话可以 set | more ,意思是将set得到的内容用more 查看,下面是常见的一些系统变量:

系统变量含义
BASH=/bin/bashshell名
BASH_VERSION=4.3.11(1)-releaseshell版本
HOME=/home/wangsq当前用户主目录
COLUMNS=80当前屏幕可以容纳的列数
LINES=30当前屏幕可以容纳的行数
OSTYPE=linux-gun系统类型
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin系统路径,一般设置JDK时都会接触,路径之间用:分割

一般输入echo $HOME 可以显示变量包含的内容:
HOME

而输入 echo HOME:
这里写图片描述
只会显示HOME,所以要输出变量内容,要记住变量前的$.


定义shell变量

一般这样定义:

variable name=value

value被赋值给变量名

例:

no=10 # ok
10=no #Error,变量名在左边
#定义username 为wangsq
username=wangsq
#定义color为red
color=red

变量名命名规则

shell变量定义通常以字母或者下划线开头,下面的都是合法的命名:

HOME
SYSTEM_VERSION
vech
_no

不要在定义时的=两边加上空格,应该这样:

 $ no=10

而不是:

 $ no =10
 $ no= 10
 $ no = 10

shell中变量名也是区分大小写的,下面:

 $ no=10
 $ No=11
 $ NO=20
 $ nO=2

是不同的变量

如果这样定义变量 $vech=或者 $vech="" ,那么执行echo $vech 时,输出就是什么都没有,这也是shell中定义NULL变量的方法。

最后一点需要注意的是,变量名中不要带* ,?这样的字符,因为它们也是命令行中通配符的一部分,有可能带来不一样的结果。

使用变量

使用 $variablename 就可以打印或者访问shell变量了

通常我们使用echo 来打印shell变量

下面我们用一个例子来看shell中怎么使用变量的:

$ vi  testscript
#
#Script to show how use variable
#
name=Jobs
os=OSX
echo "My name is $name"
echo "My OS is $os"

输出:

My name is Jobs
My OS is OSX

变量都被内容替代了。

输出变量

通常使用echo 显示变量的值
echo的用法:

echo [options] [string, variable...]
options作用
-n输出结果不新起一行
-e处理输出中包含的特殊字符

有些字符在程序语言中起到特殊的作用:

字符含义
\a响铃
\b退格
\c抑制换行
\n换行
\r回车
\t水平制表符

这些在学习C语言等其它语言也是一样的
例如我输出如下一句话:

$ echo -e "An apple a day keeps away \a\t\tdoctor\n"

最终显示是这样:
这里写图片描述

读变量

使用如下语法就可以读取变量:

read val1,val2

读取的值存储于变量中,通过在键盘输入数据,敲回车确认输入。

Eg:vi readname

echo "Please input your name:"
read usrname
echo "Hello usrname,this is your first read."

添加执行权限chomd 755 readname ,然后执行:./readname,
当输入Jobs, 回车输出Hello Jobs,this is your first read.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值