设为首页 收藏本站
查看: 1266|回复: 6

SHELL的变量和运算字符笔记

[复制链接]

尚未签到

发表于 2013-4-27 14:02:54 | 显示全部楼层 |阅读模式
本地变量 :在用户现在的shell生命期的脚本中使用
   变量名 =变量值
eg:
   LOCALHOST='test'     //设置变量(变量名必须大写)
   echo $LOCALHOST  or   echo ${LOCALHOST}    //显示变量值  
set 命令式显示本地所有的变量
   当你退出系统之后,本地变量的生命周期就结束了。
readonly设置一个变量后,那这个变量的值就不能改变了,谨慎使用
    readonly变量名   只输入readonly则显示系统已经存在的只读变量名。

环境变量 :环境变量可以用于所有用户进程
1.用户自己的环境变量   $HOME .bash_profile   可以在这个文件里面添加环境变量,在自己home目录下面设置的环境变量只对自己生效
2.系统的环境变量        /etc/profile          在这个里面添加的环境变量,对整个系统中所有的用户都生效
查看系统中的环境变量   cat more vim  /etc/profile 这个文件,或者直接 env
定义环境变量: export 变量名 =变量值
eg: 变量名大小写都可以
    export LIU=tom
    echo $LIU
        export liu=tom2
    echo $liu
       
变量替换 :变量的值替换变量的名字
eg:
    tony="tony is a name"
    echo $tony
替换方式:{}用不用都是一样的,variable name变量名,value随便给的一个提示
        ${variable name}              显示变量名的值,则显示其值
        ${variable name:+value}       如果设置了变量名,则显示value,否则为空
        ${variable name:?value}       如果未设置变量名,显示用户定义错误信息value  ||可以提醒变量是否定义了
        ${variable name:-value}       如果未设置变量名,则显示其值value
        ${variable name:=value}       如果未设置变量名,设置其值,并显示
eg:
[iyunv@localhost ~]# this="123"           //设置变量this的值
[iyunv@localhost ~]# echo $this           //显示变量this的值
123
[iyunv@localhost ~]# echo ${this:+that}    //如果设置了this变量的值,则显示that(that是提示)
that
[iyunv@localhost ~]# echo ${this1:+"that"}  //如果没有设置this1变量,则显示为空

[iyunv@localhost ~]# echo ${this1:?no defind}   //如果没有设置变量this1,则显示错误,no defind是给你的提示
-bash: this1: no defind
[iyunv@localhost ~]# echo ${this1:-no defind}   //如果没有设置变量this1,则显示提示,但不报错
no defind
[iyunv@localhost ~]# echo ${this:-no defind}     //如果设置变量this,则显示变量的值,不给提示
123
[iyunv@localhost ~]# echo ${this2:=defind}       //如果没有设置变量this2,则这句相当于设置并且赋值
defind
[iyunv@localhost ~]# echo $this2       //显示刚才用上面的方式设置的变量this2的值
defind

    变量清除 unset变量名   readonly既不能重新设置值也不能unset掉,unset也不能删除环境变量

位置变量 :向脚本中使用位置参数,向系统命令传递参数 $0,$1,...$9
$0表示脚本中的名字,$1表示脚本中的第一个参数,然后依次类推
           (脚本的第一行是脚本是用什么shell写的)
           (脚本的第二行是脚本的名字,脚本的用途)            写脚本养成好习惯
           (脚本的第三行是由谁写的,什么时间写的)
eg:向脚本中使用位置参数
#####vim eg1.sh
#!/bin/bash   
#eg1.sh      
echo "this is script name: $0"
echo "it is one parameters: $1"
echo "it is two parameters: $2"
echo "it is three parameters: $3"
echo "it is four parameters: $4"
echo "it is five parameters: $5"
####保存退出,chmod +x eg1.sh
####运行./eg1.sh 1 2 3 4
[iyunv@localhost ~]# ./eg1.sh 1 2 3 4
this is script name: ./eg1.sh
it is one parameters: 1
it is two parameters: 2
it is three parameters: 3
it is four parameters: 4
it is five parameters:

eg:向系统命令传递参数
#####vim eg2.sh
#!/bin/bash
#eg2
find /root -name $1 -print
####保存退出,chmod +x eg2.sh
####运行./eg2.sh gnome-vfs
[iyunv@localhost ~]# ./eg2.sh gnome-vfs
/root/.gnome/gnome-vfs

标准shell变量:bash默认建立了一些标准环境变量,可在/etc/profile中定义
EXINIT :保存使用vi编辑器的初始化选项
HOME :用于记录用户的主目录
IFS :用作shell指定的缺省域分隔符;一个个字段域之间用什么隔开的理论上可以任意字符,比喻/usr/bin;/usr/sbin这里的IFS就是”;”了。
LOGNAME :登录名
MAIL :用户邮箱存放的位置
MAILCHECK:用户的邮箱每隔多少秒(默认60秒)检查一下是否有新邮件发过来。
MAILPATH:当用户有多个邮箱时,可以用到这个变量,也就是mail存在哪几个文件中,它的格式和 PATH变量一样。
TERM:用户登录系统的终端类型什么,默认是vt100.
PATH:可执行文件寻找的路径。
TZ:表示时区。
PS1:登录系统的提示符 比如:“[iyunv@localhost ~]#” 就是提示符
PS2:命令提示符,一般在一行输不完,需要输入多行时的提示符。默认是”>”
PWD:当前目录是什么。
SHELL:当前运行的shell是哪个。
TERMINFO:终端类型的配置信息。
EDITOR:设置编译器工具
eg:
[iyunv@localhost ~]# echo $MAILCHECK
60
[iyunv@localhost ~]# set | grep "MAILCHECK"
MAILCHECK=60

PS1提示符的设置
\d:代表日期,格式为星期 月 日
\t:24小时格式显示时间,HH:MM:SS
\A:24小时格式显示时间, HH:MM
\T:12小时格式显示时间,HH:MM:SS
\H:完整的主机名称
\h:只取主机名称的第一个名字
\u:当前账户名
\v:bash版本信息
\w:完整工作目录
\W:只列出最后一个目录
\#:执行的第几个指令
\$:root用户提示符是#,其他的用户提示符是$
eg:
PS1='[\u@\h \W]\$ '   提示符 [iyunv@localhost ~]#
PS1="\u: \w\\$ " 这样,提示符就变成:root: /usr/bin$

特殊变量
  $0 正在被执行命令的名字。
  $# 表示传递到脚本的参数个数
  $* 以一个字符串显示所有向脚本传递的参数,跟位置变量不同的是这里参数可超过9个。
  $$ 表示当前运行脚本的进程ID号
  $! 表示后台运行的一个进程的ID号
  $@ 与$#相同,但是使用时加引号,并在引号中返回每一个参数
  $- 显示shell使用的当前选项,与set命令相同
  $? 显示最后命令运行的推出状态,0表示没有错误,其他任何值表示有错误
eg:
#####vim eg2.sh
#!/bin/bash   
#eg2.sh      
echo "this is script name: $0"
echo "it is one parameters: $1"
echo "it is two parameters: $2"
echo "it is three parameters: $3"
echo "it is four parameters: $4"
echo "it is five parameters: $5"
echo "this is :$#"
echo "this is :$*"
echo "this is process ID:$$"
echo "this is last:$?"
####保存退出,chmod +x eg2.sh
####运行 ./eg2.sh A B C D F
this is script name: ./eg2.sh
it is one parameters: A
it is two parameters: B
it is three parameters: C
it is four parameters: D
it is five parameters: F
this is :5
this is :A B C D F
this is process ID:7976
this is last:0   

影响变量的命令
declare
  设置或显示变量
  -f 只显示函数名
  -r 创建只读变量(declare 和typeset)
  -x 创建转出变量
  -I 创建整数变量
  使用+替代-,可以颠倒选项的含义
export
  用于创建传给子shell的变量
   --表明选项结束,所有后续参数都是实参。
  -f 表明在“名-值”对中的名字是函数名。
  -n 把全局变量转换成局部变量。即命令的变量不再传给子shell
  -p 显示全局变量列表
readonly
  用于显示或只读变量
  --表明选项结束
  -f 创建只读变量
set
设置或重设各种shell
shift [n]
  用于移动位置变量,调整位置变量,使$3 的值赋予$2,$2的值赋予$1
typeset
  用于显示或设置变量,是declare的同义词
unset
  用于取消变量的定义
  -f 删除只读变量 ,但不能取消从shell环境中删除指定的变量 和函数
eg:
#####vim eg2.sh
#!/bin/bash   
#eg2.sh      
echo "this is script name: $0"
echo "it is one parameters: $1"
echo "it is two parameters: $2"
echo "it is three parameters: $3"
echo "it is four parameters: $4"
echo "it is five parameters: $5"
echo "this is :$#"
echo "this is :$*"
echo "this is process ID:$$"
echo "this is last:$?"
shift
echo "now this is one:$1"
echo "now this is two:$2"
####保存退出,chmod +x eg2.sh
####运行 ./eg2.sh A B C D F
this is script name: ./eg2.sh
it is one parameters: A
it is two parameters: B
it is three parameters: C
it is four parameters: D
it is five parameters: F
this is :5
this is :A B C D F
this is process ID:8094
this is last:0
now this is one:B
now this is two:C

eg:

#####vim eg2.sh
#!/bin/bash   
#eg2.sh      
echo "this is script name: $0"
echo "it is one parameters: $1"
echo "it is two parameters: $2"
echo "it is three parameters: $3"
echo "it is four parameters: $4"
echo "it is five parameters: $5"
echo "this is :$#"
echo "this is :$*"
echo "this is process ID:$$"
echo "this is last:$?"
shift 2
echo "now this is one:$1"
echo "now this is two:$2"
####保存退出,chmod +x eg2.sh
####运行
./eg2.sh A B C D F
this is script name: ./eg2.sh
it is one parameters: A
it is two parameters: B
it is three parameters: C
it is four parameters: D
it is five parameters: F
this is :5
this is :A B C D F
this is process ID:8103
this is last:0
now this is one:C
now this is two:D

引号
    双引号 " "
    单引号 ''
        反引号 ``
        反斜杠 \
eg:
[iyunv@localhost ~]# echo ert *     //得到所有root目录的文件和目录
ert anaconda-ks.cfg Desktop Documents Downloads eg1.sh eg2.sh install.log install.log.syslog
[iyunv@localhost ~]# echo ert "*"
ert *
[iyunv@localhost ~]# echo "ert *"
ert *
[iyunv@localhost ~]#        

eg:双引号:把它所包含的内容作为普通字符,但‘’ \ $  `` 除外
[iyunv@localhost ~]#  echo -e "your system is init done.\nplease reboot"
your system is init done.
please reboot
[iyunv@localhost ~]#  echo "`date`"
Wed Jan 23 07:51:49 CST 2013
[iyunv@localhost ~]# echo "$LANG"
en_US.UTF-8

eg:单引号:把它所包含的内容全都作为普通字符
[iyunv@localhost ~]# echo 'date'
date
[iyunv@localhost ~]# echo '`date`'
`date`
[iyunv@localhost ~]# echo '\n'
\n

eg:反引号:执行系统的命令,并执行出来
[iyunv@localhost ~]# date
Fri Mar  1 18:48:22 CST 2013
[iyunv@localhost ~]# echo date
date
[iyunv@localhost ~]# echo $date  //date是系统的命令,不是系统的变量,所以没有输出

[iyunv@localhost ~]# echo `date`
Fri Mar 1 18:48:39 CST 2013

eg:反斜杠:屏蔽特殊字符的特殊含义
[iyunv@localhost ~]# echo *
anaconda-ks.cfg Desktop Documents Downloads eg1.sh eg2.sh install.log install.log.syslog
[iyunv@localhost ~]# echo \*
*

运算符
  位运算符:
           反运算符:~
                   左移运算符:<<  相当于乘以2
                   右移运算符:>>   相当于除以2
                   比较运算符:&
                   异减运算符:^
                   或运算符:|
eg:
[iyunv@localhost ~]# echo $[ 8+2 ]
10
[iyunv@localhost ~]# echo $[ 8<<2 ]
32
[iyunv@localhost ~]# echo $[ 8>>2 ]
2
[iyunv@localhost ~]# echo $[ 8 & 2 ]
0
[iyunv@localhost ~]# echo $[ 8 ^ 2 ]
10
[iyunv@localhost ~]# echo $[ 8 | 2 ]
10
[iyunv@localhost ~]# echo $[ ~ 8 ]
-9
[iyunv@localhost ~]#
        逻辑符:  && ,|| ,> ,==        ,< ,!=  分别是与、或、大于、等于、小于、不等于  
eg:
[iyunv@localhost ~]# var=23
[iyunv@localhost ~]# let var+=43
[iyunv@localhost ~]# echo $var
66                      


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5538-1-1.html 上篇帖子: SHELL之awk 下篇帖子: SHELL控制流结构笔记

尚未签到

发表于 2013-4-27 14:12:35 | 显示全部楼层
只有假货是真的,别的都是假的!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-18 14:35:44 | 显示全部楼层
男人与女人,终究也只是欲望的动物吧!真的可以因为爱而结合吗?对不起,我也不知道。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-22 04:22:02 | 显示全部楼层
锻炼肌肉,防止挨揍!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-27 16:35:46 | 显示全部楼层
谢谢楼主,共同发展

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-2 20:33:20 | 显示全部楼层
所有的男人生来平等,结婚的除外。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-6 17:02:52 | 显示全部楼层
避孕的效果:不成功,便成“人”。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表