`
wsql
  • 浏览: 11714315 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

linux shell编程之变量_01

 
阅读更多

计算机硬件是由内核(kernel)管理的。我们能通过shell,KDE或者应用程序和内核通信,好让内核可以控制硬件来完成我们的工作。能够操作应用程序的接口都可以成为shell。shell是linux的任督二脉。只要打通了这二脉,任何武功都能随你运用了。

shell版本众多。有sh,csh等。你可以vim /etc/shells,瞧瞧当前你的linux有多少个可以使用的shell。linux默认是/bin/bash。当我们登入的时候,系统就会给我们一个shell,让我们来工作。而这个shell会记录在/etc/passwd文件内。你可以cat /etc/passwd。瞧瞧系统给你的shell是何方神圣。

我们可以通过tpye来查看bash的内置命令,如:type cd。在bash环境下,如果命令串太长,我们可以使用\,来转义回车键,借用两行来输出。如果我们经常需要知道所有文件及其属性,每次执行ls -al,会觉得有点麻烦,这时,我们可以使用别名,如:alias lm=‘ls -al’。你也可以vim .bash_history,查询曾经做过的操作,至于这一次则会被缓存。

变量是任何一门语言的“皇冠”。比如,y=ax+b。y就是变量,ax+b就是变量的内容。管理账号的时候,腾讯会建立一个变量y。当你申请QQ的时候,此时的x就取你。我们可用“echo $变量名”来显示变量的内容。在设置变量的时候,可借用双引号或单引号来控制,单引号与双引号必须成对。若是单引号,则其内的特殊字符仅为一般字符;若是双引号,则其内的特殊字符,如$,可以保有原本的特性。如,var=“lang is $LANG",则echo $var,可得 lang is en_US。若该变量要增加内容,则可以PATH="$PATH":/home/bin/think。若该变量需要在其他子程序执行,则需要export来使变量变成环境变量:export PATH.通常,大写字符为系统默认变量,用户变量可用小写。我们可以用"unset 变量"来取消变量的设置。

练习题:假设你定义了一个变量name=think,现在想以name这个变量的内容来定义出myname显示think is my English name这个内容,要如何设置呢?

[root@localhost ~]# name=think
[root@localhost ~]# echo $name
think
[root@localhost ~]# myname="$name is my English name"
[root@localhost ~]# echo $myname
think is my English name

练习题:如果你有一个常去的工作目录名称为"/u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/",请问该如何简化?

work="/u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/"
cd $work
同时,我们可以把这个变量写进.bash_profile里面,让你每次只要cd $work便可。

在命令执行过程中,反单引号(`)之内的命令将会被先执行,而其执行出的结果将作为外部的输入信息。比如,cd /lib/modules/`uname -r`/kernel,进入你目前内核所在的模块目录。因为,反单引号容易出错,所以,通常我们会使用$(uname -r)来等价替代。

环境变量可以帮我们达到很多功能,包括主文件夹的变换,提示符的显示,执行文件查找的路径等。我们可以用env瞧瞧oracle用户的所有环境变量与其内容。

[oracle@localhost ~]$ env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
NLS_LANG=american_america.AL32UTF8
USER=oracle
CLASS_PATH=/u01/app/oracle/product/10.2.0/db_1/JRE:/u01/app/oracle/product/10.2.0/db_1/jlib:/u01/app/oracle/product/10.2.0/db_1/rdbms/jlib:/u01/app/oracle/product/10.2.0/db_1/network/jlib
LD_LIBRARY_PATH=/u01/app/oracle/product/10.2.0/db_1/lib:/usr/lib:/usr/X11R6/lib:/u01/app/oracle/product/10.2.0/db_1/jdk/jre/lib/i386:/u01/app/oracle/product/10.2.0/db_1/jdk/jre/lib/i386/server:/u01/app/oracle/product/10.2.0/db_1/rdbms/lib
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
TNS_ADMIN=/u01/app/oracle/product/10.2.0/db_1/network/admin
MAIL=/var/spool/mail/oracle
PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/u01/app/oracle/product/10.2.0/db_1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin
INPUTRC=/etc/inputrc
PWD=/home/oracle
EDITOR=vi
LANG=en_US
ORACLE_TERM=xterm
SQLPATH=/u01/app/oracle/product/10.2.0/db_1/sqlplus/admin
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SHLVL=1
HOME=/home/oracle
LOGNAME=oracle
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
DISPLAY=:0.0
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
G_BROKEN_FILENAMES=1
_=/bin/env

那么上面这些变量有些什么功能呢?下面我们挑几个来分析一下.

HOME:代表用户的主文件夹。cd就是使用这个变量的。

SHELL:告诉我们目前这个环境使用的shell是哪个程序。linux默认使用/bin/bash.

HISTSIZE:我们曾经执行过的命令可以被系统记忆,而记录的条数,则是由这个值来设置的。

PATH:查找可执行文件的路径,目录与目录中间以冒号分隔,目录的顺序也是文件的查找顺序。

LANG:语系数据。你可以用locale -a来查看你的系统所支持的语系有哪些。但其实你只要设置LANG,则其他的语系变量就会被他所替代。系统默认的语系,你可以cat /etc/sysconfig/i18n来看。无论如何,如果发生一些乱码问题,那么请设置LANG.

再来看三个变量。

PS1:借助变量PS1,我们可以定制自己喜欢的bash环境的提示符的显示。http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2124620,这个链接可以设置成彩色的tty。

$ :当前shell的进程号。你可以echo $$

?:表示上一个命令的回传值。一般,如果命令成功执行,则会回传一个0;如果失败,则回传一个非0的随机数。

环境变量(相当于全局变量)和自定义变量(相当于自定义变量)的差别在于,子进程仅会继承父进程的环境变量,而不会继承父进程的自定义变量。如果我们把自定义变量转成环境变量,那该变量就可以继续在子进程中存在了。这个任务由export完成。export 变量名称。那么这个变量就变成了环境变量。

分享到:
评论

相关推荐

    LinuxShell脚本学习基础视频

    【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_shell脚本编程_03变量和数值运算,父shell和子shell的...

    Linux Shell编程基础

    Linux Shell编程基础 1.调用shell 2.注释 3.执行shell脚本 4.接收用户输入并赋值给变量 5.Bash中的变量 1. 环境变量 1.1HOME 2.2LANG 3.3SHELL 4.4PATH 5.5PS1 6.6PS2 7.7只读环境变量 8.8永久修改环境变量 2. 位置...

    Linux Shell编程从初学到精通 第2版

    第1章 Shell脚本编程概述 1 第2章 Linux文件系统和文本编辑器 12 第3章 正则表达式 43 第4章 sed命令和awk编程 64 第5章 文件的排序、合并和分割 105 第6章 变量和引用 133 ...第17章 bash Shell编程范例 420

    Linux下Shell从入门到精通完整版视频.zip

    2.Shell编程之变量及LAMP导航菜单编写.mp4 3.Shell编程之IF条件语句各种案例演练.mp4 4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及实战批量远程命令脚本.mp4 7.While...

    Linux Shell编程3/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    LINUX_Shell编程基础教程.rar_linux_shell编程_教程

    1)在Linux编辑中命令区分大小写字符。 2)在Shell语句中加入必要的注释,以便以后查询和维护,注释以#开头。 3)对Shell变量进行数字运算时,使用乘法符号“*”时,要用转义字符“\”进行转义。 4)由于Shell对命令...

    LinuxShell编程全攻略

    介绍shell编程的相关知识 Shell 基本语法 Shell 定义的环境变量 用户定义的变量 Shell 程序设计的流程控制 运行Shell 程序的方法 bash 的内部命令

    Linux Shell 脚本编程入门教程

    深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K ...

    shell编程基础之变量

    shell编程基础之变量 linux mooc笔记

    linux shell编程[第一部分 shell 基础编程] 第02章 变量和运算符

    linux shell编程[第一部分 shell 基础编程] 第02章 变量和运算符

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    本书通过各种实用的系统管理小技巧和趣味脚本代码,详尽地介绍了shell编程各个不同的方面。学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍了SHELL编程技巧,各种UNIX命令及语法,还...

    Linux Shell编程实验

    Shell编程实验 一、实验目的 了解 Shell 的作用和主要分类。 了解 Bash的一般语法规则。 练习编写简单的shell程序。 二、实验内容 1.Shell变量的定义及其使用。 2.位置参数和环境变量。 3.Shell中的特殊字符。 4....

    Linux Shell编程1/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    Linux Shell编程2/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    LINUX与UNIX SHELL编程指南

    呵呵,这真的是一本好书《LINUX与UNIX SHELL编程指南》 --------------------------------------------- 经典《Linux与UNIX Shell编程指南》 shell是一种完整的编程语言,易学易用;shell脚本可以使烦人的手工作业...

    实战Linux Shell编程与服务器管理-作者:卧龙小三(1)

    要达到这个境界,管理者必须具备相当程度的Shell操控能力与Shell程序设计能力,卧龙小三拥有丰富的主机管理实务经验,以及多年的教学经验,相信这本《实战Linux Shell编程与服务器管理》必能引领读者轻松跨越Bash ...

    LINUX与UNIX SHELL编程指南(很全)

    第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...

    尚官Linux Shell 编程实战

    可以说,熟练掌握Shell编程,能大大提高系统管理的效率。 主要目的 编写shell脚本程序 交互方式下使用shell的流程控制,编写复合命令 主要内容 元字符,如:引号 shell的变量替换,命令替换,文件名...

    新版Linux Shell编程实训(全)20170518.docx

    项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42...

    老男孩Linux shell 高级编程

    如shell编程需要的基础知识储备、shell脚本概念介绍及第一个脚本案例、shell脚本基础知识-作用地位-比其他语言优势、建立一个规范的shell脚本、执行shell脚本的多种方法及重要区别精讲、shell脚本开发的9点基本规范...

Global site tag (gtag.js) - Google Analytics