我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell变量的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell变量的示例分析

这篇文章主要介绍了Shell变量的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。


先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量。其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置。

1 系统变量

Shell常用的系统变量并不多,但却十分有用,特别是在做一些参数检测的时候。下面是Shell常用的系统变量
表示方法  描述 
$n  $1 表示第一个参数,$2 表示第二个参数 ... 
$#  命令行参数的个数 
$0  当前程序的名称 
$?  前一个命令或函数的返回码 
$*  以"参数1 参数2 ... " 形式保存所有参数 
$@  以"参数1" "参数2" ... 形式保存所有参数 
$$  本程序的(进程ID号)PID 
$!  上一个命令的PID 
其中使用得比较多得是 $n $# $0 $? ,看看下面的例子:

代码如下:


#!/bin/sh
#This file is used to explain the shell system variable.
echo "the number of parameter is $# ";
echo "the return code of last command is $?";
echo "the script name is $0 ";
echo "the parameters are $* ";
echo "/$1 = $1 ; /$2 = $2 ";


下面是运行结果:
-bash-2.05b$ ./chapter2.1.sh winter stlchina
the number of parameter is 2
the return
 code of last command is 0
the script name is ./chapter2.1.sh
the parameters are winter stlchina
$1 = winter ; $2 = stlchina
这个例子太简单了,一点也不实用,下面来个实用的,如果你看不懂,没有关系,后面的内容会有详细解释。

代码如下:


#!/bin/sh
if [ $# -ne 2 ] ; then
echo "Usage: $0 string file";
exit 1;
fi
grep $1 $2 ;
if [ $? -ne 0 ] ; then
echo "Not Found \"$1\" in $2";
exit 1;
fi
echo "Found \"$1\" in $2";


上面的例子中使用了$0 $1 $2 $# $? 等变量,下面是程序的解释:
1.判断运行参数个数,如果不等于2,显示使用"用法帮助", 其中 $0 表示就是脚本自己。
2.用grep 在$2 文件中查找$1 字符串。
3.判断前一个命令运行后的返回值(一般成功都会返回0, 失败都会返回非0)。
4.如果没有成功显示没找到相关信息,否则显示找到了。
5.其中/"表示转义,在"" 里面还需要显示"号,则需要加上转义符/" .
下面运行的例子:
./chapter2.2.sh usage chapter2.2.sh
Not Found "usage" in
 chapter2.2.sh
-bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh     
echo
 "Usage: $0 string file";
Found "Usage" in
 chapter2.2.sh

2 Shell用户变量

2.1 基础
不管系统变量有多少,对于需求来说,总是不够的。用户变量是最常用到的变量,使用也十分简单。

用户定义的变量必须由字母数字及下划线组成,并且变量名的第一个字符不能为数字, 与其它UNIX名字一样,变量名是大小写敏感的. 对于用户变量,用户可按如下方式赋值:

name="Winter"
在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值,如:

name="Winter"
WINTER=$name
echo
 "Hello $WINTER !"

输出结果应该很清楚:Hello Winter !

这里需要注意一点:变量和'='之间不要有空格,'='和赋值也不要有空格,否则shell不会认为变量被定义。掌握了基本的使用方法,你可以完全开始你的编程工作了。不过有时候需要未雨绸缪,下面介绍用户变量的一些技巧。

2 使用技巧
也可以用变量和其他字符组成新的字,这时可能需要把变量用{}括起,如:

SAT=Satur
echo
 Today is ${SAT}day
输出结果是: Today is Saturday

有时候为了避免变量名和别的字符产生混淆,你最好养成习惯把变量名用{}括起来。

对于未赋值的变量, Shell以空值对待, 用户也可以用unset命令清除给变量赋的值.看一个例子:

代码如下:


#!/bin/sh
echo "a=$a" ;
a=2
echo "a=$a" ;
unset a
echo "a=$a" ;


先猜猜结果是什么?
-bash-2.05b$ ./test
.sh
a=
a=2
a=
如果你懂C++,你应该知道有个变量修饰符"const",用于避免程序一不小心对变量进行修改。在shell中,对于用户变量,你可以使用同样的修饰符"readonly", 如果我把上面的例子修改成这样:

代码如下:


#!/bin/sh
echo "a=$a" ;
#下面增加了readonly
readonly a=2   
echo "a=$a" ;
unset a
echo "a=$a" ;


其结果当然会不一样了:
-bash-2.05b$ ./test
.sh
a=
a=2
a=2
2.3 shell 中的数组
shell变量中还能设置数组,但是不同的shell版本有不同数组赋值方法,而bourne shell 中不支持数组方式。因此,如果不是十分需要,还是建议你不要使用数组。若你的数据结构十分复杂,必须要使用数组,那么我建议你还是选择别的语言吧,shell不是万能的。

shell有两种赋值方式,第一种是直接用下标赋值:

name[0]="Tom"
name[1]="Tomy"
name[2]="John"
...
另一种方式对于不同的shell版本不一样。bash中赋值:
[code]
#!/usr/local/bin/bash
name=("Tom" "Tomy" "John")
for i in 0 1 2
do echo $i:${name[$i]} ;
done

[html]
上面两种赋值方式达到的效果一样。另外,你看见访问数组元素的方法了吗?使用${name[index]}的方式。注意第一行使用的是#!/usr/local/bin/bash, 和以前有些不一样哦。其输出结果是:
-bash-2.05b$ ./test
.sh   
0:Tom
1:Tomy
2:John

3 shell 环境变量

shell 环境变量是所有shell 程序都会接受的参数。shell程序运行时,都会接收一组变量,这组变量就是环境变量。常用的环境变量:

名称描述
PATH命令搜索路径,以冒号为分隔符.注意与DOS下不同的是, 当前目录不在系统路径里
HOME用户home目录的路径名,是cd命令的默认参数
COLUMNS定义了命令编辑模式下可使用命令行的长度
EDITOR默认的行编辑器
VISUAL默认的可视编辑器
FCEDIT命令fc使用的编辑器
HISTFILE命令历史文件
HISTSIZE命令历史文件中最多可包含的命令条数
HISTFILESIZE命令历史文件中包含的最大行数
IFS定义SHELL使用的分隔符
LOGNAME用户登录名
MAIL指向一个需要SHELL监视其修改时间的文件.当该文件修改后, SHELL将发消息You hava mail给用户
MAILCHECKSHELL检查MAIL文件的周期,单位是秒
MAILPATH功能与MAIL类似.但可以用一组文件,以冒号分隔,每个文件后可跟一个问号和一条发向用户的消息
SHELLSHELL的路径名
TERM终端类型
TMOUTSHELL自动退出的时间,单位为秒,若设为0则禁止SHELL自动退出
PROMPT_COMMAND指定在主命令提示符前应执行的命令
PS1主命令提示符
PS2二级命令提示符,命令执行过程中要求输入数据时用
PS3select的命令提示符
PS4调试命令提示符
MANPATH寻找手册页的路径,以冒号分隔
LD_LIBRARY_PATH寻找库的路径,以冒号分隔


这些变量,要关注的最多的就是PATH, 其重要性不要我说了吧?

如果你希望把你定义的变量让其他所有的shell程序都能使用,也就是定义新的环境变量。你只要使用export关键词就可以了。例如:
export
MY_NAME=Winter
export
PATH=/home/winter/bin:$PATH

上面的程序中,第一行输出MY_NAME变量,第二行是在环境变量PATH中增加一个路径/home/winter/bin 。如果你希望这些设置在你登陆unix/linux都有效,你需要把他们加入到你的shell启动脚本中, 如果是使用bash

~/.bash_profile
其他版本你看一眼就知道了,在你的home目录下,以"."开头的文件,一般都会隐藏起来,你需要使用'ls -al'命令来显示。

感谢你能够认真阅读完这篇文章,希望小编分享的“Shell变量的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell变量的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell变量的示例分析

这篇文章主要介绍了Shell变量的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,
2023-06-09

shell中变量的示例分析

小编给大家分享一下shell中变量的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.简介变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据
2023-06-09

Shell中变量作用域的示例分析

这篇文章主要为大家展示了“Shell中变量作用域的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell中变量作用域的示例分析”这篇文章吧。前言众所周知Shell 中的变量只作用于当前
2023-06-09

Shell编程中特殊变量的示例分析

这篇文章给大家分享的是有关Shell编程中特殊变量的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。$0 $# $n-->$[1..9] $* $@1、在shell中存在着一些特殊而又重要的变如:$1 $0
2023-06-09

shell循环中变量作用域的示例分析

小编给大家分享一下shell循环中变量作用域的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近实现了一个shell脚本,功能简单来说就是从文件中按行读取
2023-06-09

Swift变量的示例分析

这篇文章主要介绍了Swift变量的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Swift 是苹果推出的编程语言,专门针对 OS X 和 iOS 的应用开发。Swif
2023-06-27

Shell编程中变量数值计算的示例分析

小编给大家分享一下Shell编程中变量数值计算的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如果要执行运算,那就少不了运算符,和其他的编程语言相似,shell也有很多的运算符如下:+、-、:代表着加号 和减号 或
2023-06-09

Linux中Shell环境变量是否存在的示例分析

这篇文章主要介绍Linux中Shell环境变量是否存在的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!#!/bin/bashif [ 0"$PATH" = "0" ]; then echo "not fou
2023-06-09

Python环境变量的示例分析

这篇文章将为大家详细讲解有关Python环境变量的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python环境变量具有一个强大灵活的工业级的记录模块,该模块能够在不同的层次把消息记录到任意位置,
2023-06-17

java中变量和常量的示例分析

小编给大家分享一下java中变量和常量的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!变量和常量在程序中存在大量的数据来代表程序的状态,其中有些数据在程序
2023-05-30

PHP常量和变量之变量引用的示例分析

小编给大家分享一下PHP常量和变量之变量引用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关于PHP常量和变量之变量引用分别写两段代码,如下所示:
2023-06-15

JavaScript中变量对象的示例分析

这篇文章主要介绍JavaScript中变量对象的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、变量对象在函数上下文中,我们用活动对象(activation object, AO)来表示变量对象。活动对象和
2023-06-14

函数变量作用域的示例分析

这篇文章将为大家详细讲解有关函数变量作用域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。局部变量:在函数中,定义的变量就是局部变量,其作用范围仅限函数的内容;形参也是函数内部的变量,也是局不变量
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录