shell学习笔记之变量(一)
一、普通变量
1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们
2.默认所有的变量都被看做字符串,并且以字符串存储
3.变量区分大小写
4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变量名
5.如果字符串中包含空格,就必须用引号括起来
6.等号两边不能有空格
#!/bin/sh myvar="Hi there" echo $myvar
echo "$myvar"
echo '$myvar' #不会发生替换
echo \$myvar #不会发生替换 echo Enter some text
read myvar
echo '$myvar' now equals $myvar salutation=+ exit $./variable
Hi there
Hi there
$myvar
$myvar
Enter some text 输入:Hello World
$myvar now equals Hello World +
二、环境变量和参数变量
$0 shell脚本的名称
$1, $2,... 脚本程序的参数
$# 传递给脚本的参数的个数
$* 在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分割开。
如果IFS被修改了,那么$*将命令行分割为参数的方式也会改变。
$@ $*的一个变体,不适用IFS变量,即使IFS为空,参数也不会挤在一起。
$$ 脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/temp/tempfile_$$
$HOME 用户的家目录
$PATH 冒号分割的用来搜索命令的目录列表
$PS1 命令提示符,通常是$字符,在bash中可以设置更复杂的值,比如:[\u@\h \W]$就是一个流行的默认值,
给出用户名、机器名、当前目录名、提示符$
$PS2 二级提示符,用来提示后续的输入,通常是>字符
$IFS 输入域分隔符,读取输入时,它给出用来分割单次的一组字符,通常时候空格,换行符,制表符
$@和$*的区别
$ IFS=''
$ set foo bar bam $ echo "$@"
foo bar bam $ echo "$*"
foobarbam $ unset IFS $ echo "$*"
foo bar bam
shell学习笔记之变量(一)的更多相关文章
- shell学习笔记3---shell变量
Shell变量的定义.赋值和删除 脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有 ...
- Shell学习笔记 - 环境变量配置文件(转)
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- Shell学习笔记 - 环境变量配置文件
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- shell 学习笔记3-shell变量扩展
一.特殊位置参数变量 1.特殊位置参数变量 在shell中比如:$0.$1.$#,等被称为特殊位置参数变量,当命令行.函数.脚本执行等处传递参数时,就需要使用位置参数变量 参数说明如下: 2.示例$1 ...
- Shell 学习笔记之变量
变量 知识点 变量赋值和输出 variable="hello world" echo $variable 或者 echo ${variable} (最后格式统一使用后者) 只读变量 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- shell 学习笔记2-shell-test
一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...
随机推荐
- vue 渲染流程
1.DOM 节点树 高效的更新所有这些节点会是比较困难的,因为原生的DOM节点属性很多,渲染性能差. 2.虚拟 DOM “虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼. ...
- css before和after伪元素应用
1.说明 ":before" 伪元素可以在元素的内容前面插入新内容. ":after" 伪元素可以在元素的内容之后插入新内容. 伪元素默认展示为inline, ...
- 杀戮天使(Angels of Death)无删减版 高清下载
Created by Marydon on 已完结 免责声明 本人所提供的资源搜集于网络,仅供学习交流使用,不得进行任何商业及非法用途,由此产生的一切后果将由使用者本人承担: 本人仅仅提供一个观摩 ...
- sybase数据库学习笔记(一)
sybase的基本框架 sybase数据库由系统数据库.用户数据库.数据库设备和辅助文件组成. 1. 系统数据库 sybase数据库是多个数据库结构的数据库管理系统.分为系统数据库和用户数据库. 系统 ...
- js 取值 getElementsByTagName,getElementsByName
getElementsByTagName,getElementsByName 获取的值是数组的所以用[0][1]引用 1 <select multiple size="2" ...
- RCF库ClientStub.setAutoReconnect
这个选项为false时,当连接断开时,第一次调用服务会抛出异常,而第二次调用时,也会自动连接.
- HDUOJ----(1084)What Is Your Grade?
关键是自己没有读懂题目而已,不过还好,终于给做出来了...... What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memor ...
- 可以尝试用Google Font API来摆脱网页字体的单调 仅仅抛砖引玉
http://www.nowamagic.net/librarys/veda/detail/2513
- eclipse.ini的相关说明
http://www.cnblogs.com/yan5lang/archive/2011/05/24/2055867.htmlEclipse的启动由$ECLIPSE_HOME/eclipse.ini控 ...
- JSP开发中对jstl的引用方式(标签库引用)
创建标签库引用文件taglibs.inc 一 采用本地标签库的taglibs.inc文件 <%--struts库标签 --%> <%@ taglib uri="/WEB-I ...