一、Shell变量的应用
1、Shell变量的种类
    ·用户自定义变量:由用户自己定义、修改和使用
    ·预定义变量:Bash预定义的特殊变量,不能直接修改
    ·位置变量:通过命令行给程序传递执行参数
2、变量的赋值与引用
    ·定义新的变量
            变量名要以英文字母或下划线开头,区分大小写
            格式:变量名=变量值
   · 查看变量的值
            格式:echo $变量名
        echo  "my name is $name"
        echo  "my name is ${name}bd"
 
     ·从键盘输入内容为变量赋值
            格式: read [-p "信息"] 变量名
     ·结合不同的引号为变量赋值
            双引号“”:允许通过$符号引用其他变量值
            单引号‘’:禁止引用其他变量值,$视为普通字符
            反撇号··:将命令执行的结果输出给变量
    注意:默认单、双引号里都不能解析转义字符(如/n)的
例子A:
[root@Salve]# cat demo.sh
#!/bin/bash
read -p "enter you name:" name
echo "my name is $name" [root@Salve]#./demo.sh
enter you name:Tom
my name is Tom

例子B:

[root@Salve]# cat demo.sh
#!/bin/bash
read -p "enter you name:" name
echo 'my name is $name' [root@Salve]# sh demo.sh
enter you name:user44
my name is $name

例子C:

[root@Salve]# cat demo.sh
#!/bin/bash
read -p "enter you name:" name
echo 'my name is' $name [root@Salve]#./demo.sh
enter you name:user55
my name is user55

例子D:

[root@Salve]# cat demo.sh
#!/bin/bash
read -p "enter you name:" name
echo '$name /n $name /n $name'
echo "$name /n $name /n $name" [root@Salve]# sh demo.sh
enter you name:user
$name /n $name /n $name
user /n user /n user
例子E:
[root@Salve scripts]# cat test.sh
#!/bin/bash
str1=`echo `
str2=`date`
echo $str1;
echo "today is: $str2";
echo "today is: $str2!!!";
[root@Salve scripts]#./test.sh today is:2016年05月24日星期二21:: CST
today is: 2016年 05月 24日 星期二 :: CST!!!
 
vim编辑文件小技巧:
ESC键后
    :set nu可以设置显示行号;
    :set nonu可以设置行号消失
 
3、删除变量
    ·清除用户定义的变量
            格式:unset    变量名
例子:
[root@Salve]# cat test.sh
#!/bin/bash
#test.sh
name='user123'
echo $name unset name
echo $name
[root@Salve]# sh test.sh
user123

注意:第二行为空

 
5、位置变量
    ·表示为$n,n为1~9之间的数字
[root@Salve scripts]# cat demo.sh
#!/bin/bash echo $
echo $
echo $
echo $
echo $
echo $
echo $
echo $
echo $
echo $
[root@Salve scripts]#./demo.sh a b c d e f g h i j
a
b
c
d
e
f
g
h
i
a0
 
例子:
[root@Salve scripts]# cat demo.sh
#!/bin/bash case $ in
start)
echo 'start...'
;;
stop)
echo 'stop...'
;;
esac
[root@Salve scripts]#./demo.sh start
start...
[root@Salve scripts]#./demo.sh stop
stop...
4、预定义变量
    ·表示形式如下:
            $#:命令行中位置参数的个数
            $*:所有位置参数的内容
            $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
            $0:当前执行的进程/程序名

例子A:$0显示当前脚本的名称

[root@Salve scripts]# cat a.sh
#!/bin/bash
echo "当前您正在执行的脚本名称是:"$
echo $
echo $
[root@Salve scripts]#./a.sh
当前您正在执行的脚本名称是:./a.sh
./a.sh
./a.sh

例子B:

[root@Salve scripts]# cat a.sh
#!/bin/bash
echo "总共有${#}个参数"
echo "参数的内容是:$*"
[root@Salve scripts]#./a.sh a b c d e f g h i j k l m n o p q
总共有17个参数
参数的内容是:a b c d e f g h i j k l m n o p q

例子C:

[root@Salve scripts]# cat b.sh
#!/bin/bash for i in$*;do
echo $i
done
[root@Salve scripts]#./b.sh a b c
a
b
c
例子D:
[root@Salve scripts]# cat test.sh
#!/bin/bash
tot=
for i in $*;do
tot=$(($tot+$i))
done
echo $tot [root@Salve scripts]#./test.sh

例子E:

[root@Salve scripts]# cat temp.sh
#!/bin/bash
ls -l
echo $? [root@Salve scripts]#./temp.sh
总用量8
-rwxr-xr-x. root root 285月2414: temp.sh
-rwxr-xr-x. root root 695月2414: test.sh

例子F:

[root@Salve scripts]# cat temp.sh
#!/bin/bash
#ll
ls if[[$?==]];then
echo '上一条命令执行成功'
else
echo '上一条命令执行失败'
fi
[root@Salve scripts]#./temp.sh
temp.sh test.sh
上一条命令执行成功
 
6、计算整数表达式的运算结果
    格式:expr 变量1 运算符 变量2 ...[运算符 变量n]
expr的常用运算符(现在较少用,用简单的方法)
        加法运算:+
        减法运算:-
        乘法运算:\*
        除法运算:/
        求模(取余)运算:%

[root@Salve scripts]# cat a.sh
#!/bin/bash expr +
expr $ + $
num=`expr +`
echo $num [root@Salve scripts]#./a.sh

现在更常用的是如下方法:

[root@Salve scripts]# cat a.sh
#!/bin/bash num1=$((+))
num2=$((-))
num3=$((*))
num4=$((/))
num5=$((%))
echo $num1
echo $num2
echo $num3
echo $num4
echo $num5
[root@Salve scripts]#./a.sh

三、Shell变量类型和运算符的更多相关文章

  1. shell变量类型和运算符

    一.shell变量的应用 1.shell变量的种类 ①用户自定义变量:由用户自己定义,修改和使用 ②预定义变量:bash预定义的特殊变量,不能直接修改 ③位置变量:通过命令行给程序传递执行参数 二.变 ...

  2. Shell变量类型和运算符-2

  3. Python 变量类型和运算符

    -*- coding:utf-8 -*- ''' if语法 if conditon: [tab键] command [tab键] command ... else: [tab键] command [t ...

  4. JavaScript-基础类型和运算符

    JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...

  5. Java1变量数据类型和运算符

    day02_变量数据类型和运算符   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class jh_01_数据类型说明 {     public  ...

  6. Python笔记004-Python最基本内置数据类型和运算符

    第二章(1)Python编程基础概念 1. 最基本内置数据类型和运算符 每个对象都有类型,Python 中最基本的内置数据类型: 1. 整数 整数,2345 ,10 ,50 2. 浮点型 小数,3.1 ...

  7. Java历程-初学篇 Day02变量,数据类型和运算符

    一,数据类型 1,基础数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔类型 boolean 2,引用类型 String 字符串型 二,变 ...

  8. day3 三、基本数据类型和运算符

    一.多行注释和单行注释 """ 多行注释 多行注释 多行注释 """ # 单行注释 # print('hello world') # pri ...

  9. JavaSE-02 变量 数据类型和运算符

    学习要点 掌握变量的概念 掌握常用数据类型 掌握赋值运算符.算术运算符 掌握boolean数据类型和关系运算符 掌握变量的概念 面向过程程序的定义 程序的定义:程序=数据+算法+文档 程序要操作的数据 ...

随机推荐

  1. Linux find命令的用法实践

    一.find命令简介 Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大 ...

  2. 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法

    虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta 此方法对实体机.虚拟机安 ...

  3. 数-模(D/A)转换器

    将实现数字信号到模拟信号的转换电流称为数模(D/A)转换器,简称为DAC(Digital - Analog Convert). 目前常见的D/A转化器中,有:权电阻网络D/A转换器.倒T型电阻网络D/ ...

  4. HTML ------ 关于表单 Form

    Form(表单)主要用于采集和提交用户输入的信息,是页面与WEB服务器交互过程中 最重要的信息来源. 掌握表单(Form)有以下几个要点: 重要form属性 form常用控件 form提交方式 § 重 ...

  5. P1774 最接近神的人_NOI导刊2010[树状数组 逆序对 离散化]

    题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...

  6. OpenSessionInView模式

    首先搭建建构 引入jar包 创建实体类  Emp.java public class Emp { private Integer empId;//员工ID private String empname ...

  7. JSP前三章测试改错

    分析:文件.数据库都是持久化保存数据的,所以是正确的,而servletcontext是上下文对象当然也可以.所以正确答案为A 分析: A:判断学员是否手动安装过Tomcat(练习熟练度) B:使学员了 ...

  8. Spring多种注入方式及注解实现DI

    一.Bean作用域 spring容器创建的时候,会将所有配置的bean对象创建出来,默认bean都是单例的.代码通过getBean()方法从容器获取指定的bean实例,容器首先会调用Bean类的无参构 ...

  9. [No000054] Windows 下Python3.5, NoteBook增强版安装

    接着上周继续,没看的童鞋.请移步: http://www.cnblogs.com/Chary/p/No00004B.html 这里,假设你已经能够看到这个画面了: 接下来,我们继续 给药 : 安装no ...

  10. c#导出bugfree3.0的数据到禅道

    环境:vs2012MVC4项目,mysql server5.6 准备:bugfree的数据库导出后.sql文件,禅道7.1的数据库文件 基本过程:这是个笨办法,也没有优化过代码,导入数据时候比较慢.禅 ...