码迷,mamicode.com
首页 > 系统相关 > 详细

linux-bash变量,bash脚本

时间:2017-02-17 15:57:13      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:变量   bash   


bash变量类型:
 环境变量
 本地变量(局部变量)
 位置变量
 特殊变量
 
本地变量:
set VARNAME=VALUE: 作用域为整个bash进程;

局部变量:
local VARNAME=VALUE:作用域为当前代码段;


环境变量:作用域为当前shell进程及其子进程;(操作变量本身使用VARNAME,操作变量的值则只用$VARNAME)
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
 “导出”


[root@localhost ~]# export name
[root@localhost ~]# bash
[root@localhost ~]# echo $name
cxiong
[root@localhost ~]# bash
[root@localhost ~]# echo $name
cxiong


引用变量:${VARNAME},括号有时可以省略

[root@localhost ~]# name=cxiong
[root@localhost ~]# echo $name
cxiong
[root@localhost ~]#

[root@localhost ~]# echo "my name is $name"
my name is cxiong
[root@localhost ~]#



位置变量:
$1, $2, ...


特殊变量:
$?: 上一个命令的执行状态返回值;

[root@localhost ~]# echo $?
0
[root@localhost ~]# ll /varr
ls: cannot access /varr: No such file or directory
[root@localhost ~]# echo $?
2
[root@localhost ~]#


程序执行,可能有两类返回值:
 程序执行结果
 程序状态返回代码(0-255)
  0: 正确执行
  1-255:错误执行,1,2,127系统预留;
  
输出重定向:
>
>>
2>
2>>
&>



撤消变量:
unset VARNAME

[root@localhost ~]# unset name
[root@localhost ~]# echo $name


[root@localhost ~]#



查看当shell中变量:
set

[root@localhost ~]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()



查看当前shell中的环境变量:
printenv
env
export


脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序


shebang: 魔数
#!/bin/bash
# 注释行,不执行

内核只能执行ELF类型

[root@localhost ~]# nano first.sh
[root@localhost ~]# ll first.sh

[root@localhost ~]# chmod +x first.sh
[root@localhost ~]# pwd

[root@localhost ~]# first.sh


#
# /etc/fstab
# Created by anaconda on Sun Jun 21 02:15:00 2015
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#



/dev/null: 软件设备, bit bucket,数据黑洞 

$?

[root@localhost ~]# id student &> /dev/null
[root@localhost ~]# echo $?
1
[root@localhost ~]# id rhel &> /dev/null
[root@localhost ~]# echo $?
0
[root@localhost ~]#


 
脚本在执行时会启动一个子shell进程;
 命令行中启动的脚本会继承当前shell环境变量;
 系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
 


linux-bash变量,bash脚本

标签:变量   bash   

原文地址:http://f1yinsky.blog.51cto.com/12568071/1898651

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!