3. 学习bash 变量
变量的赋值:bash shell rhce bash视频 shell视频 linux shell shell脚本 shell编程
1. 显示的定义:var=value本地变量的特点;只能影响当前的shell,而不能影响到任意的子shell
a) =两边不允许有空格,否则报错
b) 变量名可以是数字,字母,下划线的组合,但是不能用数字开头, a1B, _aa1, 1_a
c) 如果后面的值有空格的话,大家尽量使用“”引起来
d) 在定义变量的时候,变量名是不加$的,但是引用变量的时候,前面务必要加上$ bash shell rhce bash视频 shell视频 rhce培训
环境变量:
aa=1
export aa 这两条命令就把aa定义成了一个环境变量
export aa=1
declare -x aa=1
直接敲export或者env都可以显示所有的环境变量
环境变量的特点:除了在自身shell上有效之外,还能影响到所有的子shell
如果把一个变量定义为只读的话,那么这个变量就不能再重新赋值,而且也不能取消这个变量
2. Read
首先在屏幕上显示一句话,然后等待着输入,用户在键盘上输入的任何东西都会赋值给name这个变量。
如果在read后面没有指定变量的话,那么有一个默认的变量REPLY
这两行内容可以简化为:
read -p “输入您的姓名: ” name
刚才的这个例子只是让read接收了一个变量,但是我们可以让read同时读取多个变量:
那么此时在键盘上输入的第一部分赋值给name1,第二部分赋值给name2,使用空格来区分第一部分和第二部分
我们在定义的时候,写了两个变量name1 和name2,如果用户在键盘上输入的值多余两个的话,那么会怎么显示?
可以读取多个参数
可以从文件中读取,但是每次只能读取一行,如果想读取所有的行,可以使用while
这句话就把/etc/passwd 第一行赋值给了line
如果想把passwd每一行都使用read读取一遍的话,那么我们就要使用while
这句话的意思是首先把passwd的第一行赋值给line,然后打印。
然后通过while循环,把passwd里面的每一行内容都赋值一次给line
这里告诉了read一个用法,如果说大家熟悉了这种用法的话,那么我们还可以做其他的一些操作:
在linux里默认是以空格、tab、newline做为分隔符的,为了分析文件比较方便,我们可以更改默认的分隔符IFS
当我执行read line < /etc/passwd时候,因为就一个变量,所以把整行值全部赋值给了line
第二个命令里有两个变量,第一部分赋值给了name1,passwd第一行剩下所有的部分全部复制给了name2
命令的替换 var=`命令`
看清楚是反引号不是单引号,或者使用var=$(命令)
4. 位置变量
$0 文件名,$1 $2 $3 ..... ${10}
要想判断参数的个数, $#:参数的个数
$* 表示所有的参数 $@
5. 返回值
当我们执行一个命令,要不是正确的要不是错误的,那么这个结果被保存在$?
如果为0,那么就表示为真---> 命令正确执行了
如果是非0的数,那么就为假----> 命令执行错误了
预定义变量:
PATH,IFS, USER,UID,HOME,PS1,PS2,PS3,PS4,HISTFILE,HISTFILESIZE
hash
当我们执行一个命令的时候,如果没有指定路径的话,那么就到PATH里面去找。
而是先到到缓存里,hash