变量不需要声明在shell中,对一个变量赋值就像这样 myvar='hello world',注意的是=号2端不要有空格,这和我们JAVA中为了程序好看常常带空格不一样,这里有空格,你就会发现这个变量用不了。
1变量
上面是变量的声明,如果你想引用这个变量那么他的方式是$myvar,在之前带上$符号,下面写一个简单的例子
#!/bin/sh
myvar='hello world'
echo $myvar
exit 0
这就是一个很简单的shell脚本了。
2引号的使用
单引号:被单引号框住的是一个普通的字符串,里面任何一个字符都是普通字符串,特殊的字符串都失去了其特殊含义,例如
myvar1='hello world'
myvar2='$myvar1'
myvar3=$myvar1
大家可以自己打印看看这3个变量的值到底是什么。
双引号:双引号是部分忽略特殊字符,例如他会忽略空格符,但他不会忽略单引号,$和转义符号\。大家可以试试echo "$PATH"看看和echo '$PATH'2个指令就能看出他们的不同。
反引号:键盘左上角的那个引号键,被反引号括起来的字符串应该是个指令,反引号的意思就是执行这个指令并把它的输出结果替换成所有反引号之间的内容。举个例子,从错误开始shell中没有haha这个指令,你额外加的不算。 我们执行echo `haha`你就能看到报错信息了。其次,我们知道pwd指令是显示当前目录,那么执行下echo `pwd`就能看到效果了。
所以大家在给字符串赋值时候最好带上双引号或者单引号(用哪一个取决于你的需要),不管有没有必要,带上总是有好处的。
3环境变量
shell打开后就有一些变量已经被初始化了,例如输入echo $PATH你就会看到PATH变量的值,(为什么要带$, 我想前面说的比较清楚了),那么大家会有疑问,这些变量是什么时候被初始化的,以及他们到底有什么作用呢?shell中有一个指令是export,我们shell是一个进程,我们在打开这个shell时候,这个shell本身就会加载很多shell脚本,例如你执行
cd
ls -al
就会发现很多隐藏了的文件,其中一个是.bash_profile.打开看看就会发现export这个指令,这个指令export PATH意思就是从PATH变量被导出了,从此以后这个目录所代表的用户打开的shell都会认识这个变量,有这个shell打开的所有子进程也都会认识这个变量(每个用户都有自己的目录,每个目录都会有.bash_profile,所以当你手动而不是用useradd指令去添加用户时候,记得编辑这个文件),你的这些PATH,HOME这些环境变量就是在这个时候被加载的。至于作用,HOME 变量告诉你主目录,PATH变量是SHELL用于寻找指令的目录,所以在安装JDK时候,你要让SHELL认识JAVA和JAVAC指令有2种选择,一个是把JAVA和JAVAC链接到PATH中那么多目录中任意一个目录中去。另一个选择就是把JAVA和JAVAC的目录加到PATH变量后,具体怎么做很简单,直接编辑.bash_profile文件,里面有样例,怎么添加就不用说了,不过记住的是每个用户的.bash_profile目录不同,记得别加错地方,当然还有其它加载文件,你在别处加也可以。
顺便带下.bash_logout文件,你不妨在里面加一个clear指令,然后保存,退出shell看看有什么作用,如果你是本机登录可能没什么效果,但如果你是openssh远程连接,就会发现你的openssh被清屏了在你退出的时候,当然你可以加其它一些指令。
4参数变量
和C代码,java代码的参数变量差不多了,比如下面这个shell脚本
[root@liumengli my_shell]# cat test.sh
#!/bin/sh
echo $1
exit 0
我们运行看看
[root@liumengli my_shell]# ./test.sh 'hello world'
hello world
[root@liumengli my_shell]# ./test.sh
[root@liumengli my_shell]#
意义很明显了吧,1是1号参数,2是2号参数。大家还可以试试0号参数,结果是你们意料之中的事情。参数是一空格符分开,如果参数带空格,用“或者'括起来就OK了
分享到:
相关推荐
在Shell编程中,变量替换和测试是至关重要的概念。Shell是一种解释型的脚本语言,广泛应用于Linux和Unix系统中,用于自动化系统管理任务。在Shell中,变量用于存储数据,而变量替换则是提取、修改或操作这些变量值的...
在Linux中,shell变量主要分为两大类:本地变量和环境变量。除此之外,还存在另外两种特殊变量,它们是只读的,并且主要用作向shell脚本传递参数。 本地变量仅在创建它们的shell生命期内有效,也就是说,它们只在...
Shell特殊变量在Linux和Unix系统中的使用是shell脚本编程中的关键组成部分,它们提供了一种方式来访问和处理脚本运行时的环境信息。这些变量不是由用户直接赋值的,而是由shell自动创建和维护的,具有特殊的含义和...
#### 一、Shell变量概述 Shell变量是Shell脚本编程的基础之一,用于存储数据。在Shell脚本环境中,变量没有类型之分,它们只能存储文本字符,系统不会自动识别为其他类型(如数字、布尔值等)。在定义变量时,变量...
理解Shell变量的作用域对于编写高效、可维护的脚本至关重要。正确地管理变量作用域可以帮助避免变量冲突,确保数据的安全性,并使代码更加清晰。在编写脚本时,要根据需要选择合适的作用域,以便在不同级别之间有效...
理解如何在脚本中执行程序以及如何导出Shell变量,可以更好地控制Shell脚本的行为,以及子Shell与父Shell之间变量的隔离与共享。这些知识不仅有助于编写更有效的Shell脚本,还能帮助在管理Linux系统时做出更明智的...
Linux Shell 变量是 Linux 命令行中非常重要的一部分,它们可以帮助用户更方便地执行任务和管理系统。下面我们将详细解释 Linux Shell 变量的概念和使用方法。 一、shell 变量的概念 Shell 变量是 Linux Shell 中...
shell特殊变量图表,看看你知不知道?
通过理解并熟练掌握这些Shell变量和概念,初学者能够更有效地编写和调试Shell脚本,提高自动化任务的效率。记得在实际应用中,适时地设置环境变量可以使脚本更具通用性,而位置参数变量则能帮助我们灵活处理用户输入...
Linux Shell 变量设置是一种非常重要的技术,在 Linux 中,每个用户登录系统之后都会有一个属于自己的 bash shell,每个人都能够使用 bash 执行命令来收取自己的邮箱,但是 bash 是如何知道你的邮箱是哪个文件?...
Shell变量是编程的核心部分,包括用户定义变量、环境变量和位置变量(shell参数)。用户定义变量由`$`符号后跟变量名来引用,例如`myvar=value`。环境变量是可供子进程使用的全局变量,如`HOME`表示用户的主目录,`...
shell 变量是 Linux 系统中的一种重要概念,它允许用户存储和重复使用有用的信息,提高工作效率。shell 变量可以分为本地变量和环境变量两种。 什么是 shell 变量 shell 变量是存储在系统中的可读写存储单元。...
Shell变量名使用的特殊字符: $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双...
linux初学者写的小脚本,用来配置JAVA环境变量,纯属练手,不喜勿喷
深入探讨Shell变量操作:变量替换扩展与字符串处理 在Linux Shell编程中,变量操作是构建高效、灵活脚本的关键技能之一。本文将深入探讨Shell变量的高级操作技巧,特别是变量替换扩展和字符串处理,旨在帮助读者...
本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell 编程可以让开发者更好地...
内容概要:shell脚本入门——变量、字符串, 本文详细介绍了 Shell 脚本中变量和字符串的基本操作,包括变量的定义、使用和作用域,以及字符串的定义、操作和拼接。通过具体的代码示例,解释了如何定义和使用变量,...
2. **shell变量的作用域** - **局部变量**:只在当前`shell`会话或脚本中有效,一旦会话结束或脚本执行完毕,变量就会消失。 - **全局变量**:全局变量在整个`shell`进程中都是可见的,包括子进程。可以通过`...
从DB中取检索值传递给shell,生成环境变量 1. 编写myshellpara.sql 通过spool 执行一个SQL读取所要的值,结果保存在myshellvar_export.sh set feedback off; set heading off; set pagesize 0; set linesize 1000; ...
Shell变量是用来存储数据的容器,可以保存文本字符串、数字或其他信息。有两种类型的变量:本地变量和环境变量。本地变量仅在当前Shell会话中有效,一旦Shell退出或启动新进程,它们就会消失。定义变量使用等号(`=`...