`
zhangziyangup
  • 浏览: 1187056 次
文章分类
社区版块
存档分类
最新评论

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 变量名称。那么这个变量就变成了环境变量。

分享到:
评论

相关推荐

    linux_c_func.rar_C shell_linux c 编程_shell_shell linux_shell编程

    总结,Linux C编程与C Shell编程是Linux环境中不可或缺的技能。C语言提供底层控制能力,适合开发高效系统软件;C Shell则为用户提供了编写自动化脚本的便利。通过学习和熟练掌握这些知识,开发者可以更有效地管理和...

    Linux_Shell.rar_Linux shell_linux shell_linux_shell_shell_unix

    本文将深入探讨Linux Shell的各个方面,包括基本概念、常用命令、脚本编程以及源码分析。 首先,我们需要理解Linux Shell的含义。在Linux中,Shell是一个用户界面,它接收用户输入的命令,解析这些命令并执行相应的...

    shell_config.rar_Linux shell_parsing shell_shell config_get_sh

    标题"shell_config.rar_Linux shell_parsing shell_shell config_get_sh"暗示了我们要讨论的是如何使用Shell脚本来解析配置文件并获取其中的变量参数。这个过程在系统管理、应用程序自动化或者脚本编程中非常常见。 ...

    LINUX与UNIX SHELL编程指南_Linuxshell_linux_UNIX_

    本篇将深入探讨"LINUX与UNIX SHELL编程指南"中涉及的关键知识点,帮助读者理解和掌握Shell脚本编程。 1. **Shell基础**:Shell是用户与操作系统之间的一个接口,它允许用户通过命令行执行各种操作。在Linux和Unix中...

    LinuxShell编程基础教程.pdf

    本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,必须以#!开头,指定解释器的...

    linux与unix shell编程指南19-20.rar_Linux与Unix SHELL编程指南_linux shell编程

    《Linux与Unix SHELL编程指南》是一本深入探讨shell编程的经典著作,对于系统管理员和开发者来说,掌握shell脚本编写技巧是至关重要的。Shell作为Linux和Unix操作系统中的命令解释器,不仅提供了与操作系统交互的...

    linux Shell编程入门 实例讲解详解

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...

    LinuxShell编程基础.pdf

    Linux Shell 编程基础包括了解 Shell 的基本概念、Shell 变量、条件语句、循环语句、函数等。掌握这些基础知识后,可以编写出更加复杂的 Shell 脚本,实现自动化任务、数据处理、系统管理等功能。 1. Shell 变量 ...

    Linux_Shell编程_入门_基础.pdf

    ### Linux Shell编程基础知识 #### 综述篇:Shell的基本概念 **Shell** 是连接用户与操作系统内核之间的重要桥梁,可以被理解为一种特殊的程序,它作为用户与UNIX/Linux操作系统核心程序之间的接口。Shell的存在...

    Linux Shell编程-变量(MD格式)

    Linux Shell编程-变量(MD格式)

    LinuxShell脚本学习基础视频

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

    linux与unix shell编程指南21-24.rar_Linux shell_Linux与Unix SHELL编程指南_l

    Linux与Unix Shell编程指南是学习系统管理、自动化任务和脚本编写的重要资源。Shell,作为Linux和Unix系统中的命令解释器,它不仅提供了一个交互式的环境,还允许用户通过编写脚本来实现对系统的高级控制。这篇文章...

    LINUX-and-UNIX-Shell.rar_Linux shell_Unix shell_shell programmin

    Linux和Unix Shell编程是操作系统管理、自动化任务执行以及系统集成中的关键技能。这些Shell包括Bash(Bourne-Again SHell)、KornShell(ksh)和C Shell(csh),它们为用户提供了与操作系统交互的强大接口。本文将...

    实战Linux Shell编程与服务器管理-脚本文件.rar

    Shell编程是Linux操作系统中的核心技能之一,它允许用户通过命令行界面自动化执行任务,极大地提高了工作效率。以下是关于这个主题的一些关键知识点: 1. **Shell基础**:Shell是Linux系统中的一个命令解释器,用户...

    linux shell 编程1

    Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    linux shell编程手册

    Linux Shell编程是Linux系统中非常重要的一个环节,它是一种命令解释器,同时也是脚本编程语言。Shell编程使得用户可以通过编写脚本来自动化重复性任务,提高工作效率。这份"Linux Shell编程手册"将引领初学者深入...

    Linux_Shell_编程_好资料.rar

    其次,《LINUX与UNIX SHELL编程指南》.pdf,这可能是一部经典之作,详细阐述了Unix/Linux Shell编程的各个方面。书中可能包含了Shell语法、流程控制结构(如if、for、while循环)、函数定义、错误处理、输入/输出...

    2本linux shell 编程chm

    Linux Shell编程是Linux系统管理与自动化任务的核心技术之一,它主要指的是使用Shell脚本来执行一系列命令,实现自动化操作。在Linux环境中,Bash(Bourne-Again SHell)是最常用的Shell,也是许多Linux发行版的默认...

    LinuxShell编程全攻略

    Linux Shell编程是利用Shell语言进行的一种编程方式,它是Linux操作系统中不可或缺的一部分。Shell可以解释和执行用户输入的命令,同时也可以用于编写脚本程序,实现自动化的任务处理。Shell编程的主要特点包括定义...

Global site tag (gtag.js) - Google Analytics