网站地图    收藏   

主页 > 系统 > linux系统 >

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

来源:自学PHP网    时间:2015-04-14 11:12 作者: 阅读:

[导读] shell programming复习笔记-变量、环境和引号变量变量可大致分为4类:局部变量、环境变量、位置变量和特殊变量后两者是只读变量无论何种变量,我们都可以对变量进行一系列变量操作。...

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}
5
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
PS1
PS2
TERM
ulimit
其他安全类的操作(例如验证用户登陆数)
 
.logout
文件在用户登出时可被调用                                  
 
stty可用于终端设置
stty设置相应的操作对应于相应的文件符
stty -a 显示所有操作              
stty -g 保存所有操作   
stty action_name action_value  设置操作                                 
 
引号                                                             
 
“”
可以引用除$,`和\以外的所有字符。但是shell遇到上述上个字符时,尝试解析变量等操作。                                                                                                  
‘’
可以引用任何字符而不必进行解析                                     
``
执行命令并返回结果,和$()功能相同
               
\
防止特殊字符被解析                                                           

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论