变量不需要声明在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中变量作用域的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面跟着小编来一起学习学习吧。
linux超级基础系列——shell变量(本地变量和环境变量 linux超级基础系列——shell变量(本地变量和环境变量
shell特殊变量列表及各变量代表的特殊含义
shell变量不需要专门的说明语句,通过赋值语句完成变量说明并予以赋值。在命令行或 shell 脚本文件中使用Sname的形式引用变量name的值。1.变量的定义和引用 在shell中,变量的赋值格式如下: name-string ...
shell特殊变量图表,看看你知不知道?
shell的特殊变量实例详解 shell的特殊变量实例详解shell的特殊变量实例详解 $0 shell或shell脚本的名字 $* 以一对双引号给出参数列表 $@ 将各个参数分别加双引号返回 $# 参数的个数 $_ 代表上一个命令...
Shell变量名使用的特殊字符: $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双...
linux初学者写的小脚本,用来配置JAVA环境变量,纯属练手,不喜勿喷
从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 变量 ◦1 系统变量 ◦2 Shell用户变量 ■2.1 基础 ■2.2 使用技巧 ■2.3 shell 中的数组 ◦3 shell 环境变量 先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,...
主要内容: .shell基础 基本介绍,环境,选项,特殊字符 .shell变量 用户定义变量,环境变量,位置变量(shell 参数) .shell script编程 条件测试,循环及重复控制
深入_Shell_变量操作
day1shell编程简介以及变量shell编程.txt
主要讲的是Linxu的shell变量设置
第一节 Linux系统概述 一、Linux简介 二、Linux系统的特点 三、Linux系统的组成 ...二、Shell的变量 三、Shell的测试命令 四、条件语句 五、循环语句 六、函数 七、参数变量和内部变量
目录: 一、 Shell简介 二、 Shell变量 三、 Shell数组 四、 Shell控制结构 五、 Shell函数 六、 Shell调试
通过shell脚本一键实现jdk8的安装和环境变量配置工作。
练习shell变量、重定向、管道等相关命令