您的位置:首页 > 运维架构 > Shell

Shell编程笔记--变量的定义

2017-02-22 07:18 363 查看
变量的定义

sell 变量分为 本地变量,环境变量……

一、本地变量:
作用域为当前shell
name=value 或 ${name=value}
name=feifei
name=" fei fei "


只读变量
readonly name

查看所有只读变量
readonly

各种模式设置(了解):
name=feifei	设置实际值给name
name+feifei	如果name有值,则重新设值
name:?feifei	如果name没值,显示未定义用户错误信息
name?feifei	如果name没值,显示系统错误信息
name:=feifei	如果name没值,设置默认值feifei(*)
name:-feifei	同上,但只是取值,不设置feifei给name




引用变量
echo ${name}
name2="$name2":feifei2


例子:
source="home/test"
dest="tmp/test.bak"
cp $source $dest


二、环境变量
/etc/profile

变量名大写,应用时,使用export命令导出
1、NAME=feifei; export NAME
2、NAME=feifei
export NAME
3、PATH=$PATH:/$HOME/bin:export PATH


查看变量

NAME=feifei;export NAME

env | grep 'NAME'

变量导出给子进程(*)
father.sh
name=feifei
export name	#导出name值,给child.sh
child.sh	#调用子shell
echo ${name}
child.sh
echo${name}
name=feifei2


--------------------------------------

清除变量:
unset name

显示所有变量
set

三、参数--变量(*)
$0---->保留,保存实际脚本名字
$1 $2 $3 $4 $5.....$9 $(10) $(11)....

echo $0
echo $1
sh shell.sh 11

   实用应用:(*)
shell.sh:  find / -name $1 -print
sh shell.sh passwd ---->结果:查找passwd文件



四、特定变量(*):
$#传递给脚本的参数个数:(*)
$@ 与$*相同 但每个参数都加上了引号,
$* 显示所有参数
$$ 当前进程ID
$! 后台运行的最后进程ID
$. 同set

$? 显示最后命令的退出状态,0表示没有错误,



确保用户在自己的$HOME下可以执行程序

1、 cd /home/bin下加入.profile文件 没有就创建;
2、 PATH=$PATH:$HOME/bin

环境变量=全局变量
自定义变量=局部变量

随机数生成(0~32767 之间)
declare -i number=$RANDOM*10; echo $number
declare  声明变量:-a数组, -f函数, -i整形,-x设置环境变量, 同export; -r只读
declare -a myarrays='([0]="a" [1]="b" [3]="c")'

echo ${myarrays[1]}

一、输入与输出

(一) echo

    1、参数

        -n不换行;-e使转义符生效

    2、转义符 

        \c不换行;\t \n

(二) 文件描述符

    1、系统有12个文件描述符:

        0:标准输入

        1:标准输出

        2:标准错误

    2、文件重写向

        command > filename          输出到新文件

        command >> filename         输出到文件(追加)

        command 1 > filename        输出到文件

        command > filename 2>&1     输出到文件(包含错误信息)

        command > filename 2>/dev/null    输出错误信息到垃圾箱(不显示屏幕)

        command >> filename 2>&1    输出到文件(包含错误信息)(追加)

        command < filename

        command < filename > filename2  

        command < &0        

        command > &0        

        command > &-        关闭输入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: