好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

shell programming复习笔记-变量、环境和引号 - Linu

shell programming复习笔记-变量、环境和引号

 

变量

 

变量可大致分为4类:局部变量、环境变量、位置变量和特殊变量

 

后两者是只读变量

无论何种变量,我们都可以对变量进行一系列变量操作。

 

${parameter}

返回变量值

${parameter-default}, ${parameter:-default}

测试变量是否设置,未设置则返回默认值,但变量不改变

${parameter+alt_value}, ${parameter:+alt_value}

测试变量是否设置,已设置则返回默认值,但变量不改变

${parameter=default}, ${parameter:=default}

测试变量是否设置,未设置则返回默认值,变量也改变

${parameter?err_msg}, ${parameter:?err_msg}

测试变量是否设置,未设置则打印报错信息

${#var}

获取变量长度

${var#Pattern}, ${var##Pattern}

变量不被修改。删除开头部分匹配pattern的部分,#最短匹配,##最长匹配

${var%Pattern}, ${var%%Pattern}

变量不被修改。删除结尾部分匹配pattern的部分,%最短匹配,%%最长匹配

${var:pos}

${var:pos:len}

变量截断,从cos开始,len长度的字符串

${var/Pattern/Replacement}

变量替换,首次出现patter的地方,替换成rep

${var//Pattern/Replacement}

变量替换,全局出现patter的地方,替换成rep

 

hiro@v-pc:~$ var="hello"

hiro@v-pc:~$ echo ${#var}

hiro@v-pc:~$ echo ${var:2}

llo

hiro@v-pc:~$ echo ${var:1:2}

el

hiro@v-pc:~$ echo ${var/ll/xx}

hexxo

hiro@v-pc:~$ echo ${var/l/x}

hexlo

hiro@v-pc:~$ echo ${var//l/x}

hexxo

hiro@v-pc:~$ echo ${var#*e}

llo

hiro@v-pc:~$ echo ${var%o}

hell

hiro@v-pc:~$ echo ${var:-world}

hello

hiro@v-pc:~$ echo ${var:+world}

world

 

 

变量类型

shell变量是没有类型的,但是也可以通过其他方式强加定义

declare/typeset命令可设置各种变量

 

-i integer

-r readonly 相当于readonly var

-a array 相当于      

-f function

-x export

 

变量数组

bash和ksh有所不同

 

 

#!/usr/bin/bash

declare -a mon

mon=( Jan Feb Mar Apr )

 

 

echo ${#mon[*]}

echo ${mon[2]}

############ksh

#!/usr/bin/ksh

set -A mon -- Jan Feb Mar Apr

 

echo ${#mon[*]}

echo ${mon[2]}

 

局部变量

赋值即可

只有在当前进程中有用,一旦进入子进程。其会失效。  

set 返回当前所有变量        

unset 取消变量值                          

 

环境变量

环境变量是作为一个进程间通信的方式之一。

export可将变成提升为环境变量。

env返回当前所有环境变量                                     

 

位置变量

$1 $2 

根据位置返回参数和命令行                                        

 

特殊变量

$* 将所有参数放入到一个变量中       

$# 参数数量                      

$$ 返回当前进程号        

$@ 将所有参数放入不同的引号中                         

$? 上次进程的返回值       

$! 上次进程的进程号                                                                                      

环境

 

登陆过程中,linux完成一系列的操作。

验证用户名和密码,为用户开启登陆shell

随后加载profile,

从/etc/profile开始,到$HOME/.profile。每个 Linux 加载的东西可能有所不同,但是这两个文件必然会被加载,而其他文件是否会被加载可能已经在这里定义了。

可设置的东西

umask

TERM

ulimit

其他安全类的操作(例如验证用户登陆数)

 

.logout

文件在用户登出时可被调用                                  

 

stty可用于终端设置

stty设置相应的操作对应于相应的文件符

stty -a 显示所有操作              

stty -g 保存所有操作   

stty action_name action_value  设置操作                                 

 

引号                                                             

 

[]

可以引用除$,`和\以外的所有字符。但是shell遇到上述上个字符时,尝试解析变量等操作。                                                                                                  

‘’

可以引用任何字符而不必进行解析                                     

``

执行命令并返回结果,和$()功能相同

               

\

防止特殊字符被解析                                                           

查看更多关于shell programming复习笔记-变量、环境和引号 - Linu的详细内容...

  阅读:52次