Bash最基本的语法
循环和条件判断—Bash
Vim快捷键
运算符----Bash
数组----Bash
字符串—Bash
变量----Bash
变量
怎么定义变量?
- 定义变量,不需要加
$,引用需要。且变量名与等号之间不允许有空格
只读变量 readonly
readonly命令可以将变量变为可以读的,但是不允许改变
#!/bin/bash
myUr1="xxxx.com"
readonly myUr1
myUr1="yyyy.com" #ERROR 不被允许,因为myUr1只有可读的权限
#删除变量
#使用unset可以删除变量
unset myUr1 #被删除的变量,就是真的没有了,不能再引用使用了。注意:readonly不可删除,没有权限
readonly有三个参数
- 声明的变量为函数名
-f - 打印出所有的只读变量
-p - 声明的变量为数组
-a
变量类型
-
局部变量
-
环境变量 是
Bash环境自带的变量,进入Shell已经定义好了呢!$ env #OR $printenv #显示所有的环境变量现在列举一些常见的环境变量
Bash进程的进程ID---->BASHPID- 用户的主目录 ---->
HOME - 字符集以及语言编码,比如
zh_CN.utf-8---->LANG - 返回一个
0到32767之间的一个随机数 ---->RANDOM UIDUSER- 由冒号分开的目录列表,当输入可执行程序名后,会搜索这个目录的列表 ----
PATH
-
shell变量
输出变量,export命令
用户创建的变量只能作用于当前的Shell,并不能读取父Shell定义的变量。这个时候我们将变量通过export输出,那么这个变量对于子Shell相当于环境变量
NAME=foo #定义变量
export NAME #输出变量
export NAME=value #输出和赋值同时完成
#上面命令执行后,当前 Shell 及随后新建的子 Shell,都可以读取变量$NAME
特殊变量
有特殊使命的变量,用户不能赋值
-
$?上一个命令的退出码,用来判断上一个命令是否执行成功。返回0执行成功,返回非0,执行失败。$ ls fjsdk;'fk' ls: fjsdk;'fk': NO such file or directory $ echo $? 1 -
$$当前shell的进程这个可以作为临时文件
LOGFILE=/tmp/output_log.$$ -
$_上一个命令的最后一个参数 -
$0当前shell的名称或者脚本名 -
$@和$#表示脚本的参数数量 -
$!最近一个后台执行的异步命令的进程id
变量的默认值
其实这个和特殊变量的作用是相似的。比如$$返回的是进程的ID,它是有返回值的,如果没有会提示错误。但是变量的默认值不一样,如果条件为真,会返回,条件为假,会返回指定返回的内容。
-
{varname:-word}如果变量
(varname)存在且不为空,返回变量的值。否则,返回word。具体{count:-1},如果count不存在返回1。 -
{varname:+word}如果变量
(varname)存在且不为空,返回变量的值。否则,返回空 -
{varname:=word}如果变量
(varname)存在且不为空,返回变量的值。否则,对变量(varname)赋值为word -
{varname:?message}如果变量
(varname)存在且不为空,返回变量的值。否则打印varname: message。比如
${count:?"undefined!"}表示变量count未定义时就中断执行,抛出错误,返回给定的报错信息undefined!。上面四种语法如果用在脚本中,变量名的部分可以用到数字
1到9,表示脚本的参数。filename=${1:?"filename missing."}上面代码出现在脚本中,
1表示脚本的第一个参数。如果该参数不存在,就退出脚本并报错。
declare命令 ----- 可用于查找
declare命令的主要参数(OPTION)如下。
-a:声明数组变量。-f:输出所有函数定义。-F:输出所有函数名。-i:声明整数变量。-l:声明变量为小写字母。-p:查看变量信息。-r:声明只读变量。-u:声明变量为大写字母。-x:该变量输出为环境变量。
declare命令如果用在函数中,声明的变量只在函数内部有效,等同于local命令。
不带任何参数时,declare命令输出当前环境的所有变量,包括函数在内,等同于不带有任何参数的set命令。
$ declare
let命令
它支持算数,会在算数的时候详细记录学习。
361

被折叠的 条评论
为什么被折叠?



