鱼C论坛

 找回密码
 立即注册
查看: 2010|回复: 0

[学习笔记] 014-Shell编程之02变量和运算符

[复制链接]
发表于 2018-11-15 21:39:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-11-18 12:36 编辑

1、变量
shell中的变量有本地变量,环境变量,变量替换(显示变量),位置变量,标准变量,特殊变量等。
1. 本地变量
本地变量在用户现有shell的生命期的代码中使用。
定义本地变量:    variablename=value
        如: MYVAR=”test”   ==> 注意=左右不要有空格
使用本地变量:  $MYVAR   
        如:  echo $MYVAR  OR  echo ${MYVAR}
显示所有本地变量:  set
设置本地变量只读:  readonly variablename
        如:readonly MYVAR
注意:   每登录一个终端,都会运行一个shell程序,这个本地变量,就保存在这个shell程序中;如果重新登录,将启动新的shell程序,原来本地变量将消失。
2. 环境变量
环境变量用于所有用户进程。不像本地变量(只用于现在的shell),环境变量可用于所有子进程,这包括编辑器、代码和应用程序。
当前用户的环境变量:   $HOME/.bash_profile
所有用户的环境变量:   /etc/profile
声明环境变量:   export variable
查看当前shell的环境变量:  env
3. 变量替换(显示变量)
在变量名前加$,使用echo命令可以显示单个变量取值。
如: echo ${MYVAR} 或者echo $MYVAR
$(variablename)  显示实际值
$(variablename:+value)  若设置了variablename,则显示;否则空
$(variablename:?value)  若未设置variablename,则显示用户自定义信息valude
$(variablename:-value)  若未设置variablename,则显示其值
$(variablename:=value)  若未设置了variablename,则设置其值,并显示

4. 位置变量
  位置变量表示$0 $1 $2 $3 …$9;$0 代表bash文件名称 其他就是命令行参数。
#!/bin/bash
# 位置参数
echo "代码的名字 $0"
echo "parm 1: $1“
echo "parm 2: $2"
echo "parm 3: $3
5. 标准变量
bash默认建立了一些标准环境变量,可在/etc/profile中定义.
HOME   ==>  家目录, 测试echo $HOME
IFS       ==>  linux系统中字符之间的间隔字符
MAIL     ==>  当前用户的邮箱路径
TERM    ==>   当前终端的类型
PATH    ==>    shell的标准变量
PS1      ==>    提示符,即终端输入命令时前面的一串字符
PS2      ==>    续行时的提示符,默认为"> "
SHELL  ==>     当前运行的shell类型
6. 特殊变量
$#        ==> 传递到代码的参数个数
$*        ==> 以一个单字串显示所有向脚步传递的参数,与位置变量不同,次选项参数可以超过9个。
$$        ==> 代码运行的当前进程ID号
$!        ==> 后台运行的最后一个进程的进程ID
$@        ==> 与$#相同,但是使用时加引号,并在引号中返回每个参数
$-        ==> 显示shell使用的当前选项,与set命令功能相同
$?        ==> 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
#!/bin/bash
# 特殊变量
echo "代码的名字 $0"
echo "parm 1: $1"
echo "parm 2: $2"
echo "parm 3: $3"
echo "显示参数的个数:$#"
echo "显示代码全部参数:$*"
echo "显示前一命令运行后状态:$?" 
7. 影响变量的命令
unset variable  ==>  清除变量;测试 echo $testvar
注: readonly的变量,不能被清除。
export     ==>  创建环境变量
readonly  ==>  设置变量只读
shift [n]   ==>  调整位置变量的位置
2、引号
1. 双引号
        使用双引号可以引用除字符$,`反引号,\反斜杠外的任意字符或者字符串。
如:  echo -e " hello world, $SHELL '\n* hiThis 'echo $myvar' "
2. 单引号
让所有的特殊字符都失去意义。
如: echo -e ' hello world, $SHELL '\n* fishC '
3. 单反引号
反引号中的内容将作为一个系统命令,并执行其内容。
如: echo “* fishC.bbs `echo $PATH`”
4. 反斜杠
如果一个字符有特殊含义,反斜杠屏蔽其特殊含义。
含有的特殊字符:$  *  +  ^  `  ‘’  |  ?
如: echo * echo \*
3、运算符
1. 按位运算符
~op1   ==> 反运算符
op1<<op2   ==> 左移运算符
op1>>op2   ==> 右移运算符
op1 & op2   ==> 与比较运算符
op1 ^ op2   ==> 异或运算符
op1 | op2    ==>  或运算符
如:  echo $[2<<4]
注:  $[ ] 表示形式告诉shell对方括号中的表达式求值。
2. 逻辑运算符
&&  ==> 逻辑与运算
||    ==> 逻辑或运算符
如: echo $[1||0]
3. 算术运算符
+, -, ×, /, %
如:  echo $[3+9]
3. 赋值运算符
=,+=,-=,*=,/=,%=,&=,^=、|=,<<=,>>=
如: let myvar+=myvar
4、表达式替换
$[表达式]$((表达式))
所有shell的求值都是用整数完成。
$[]可以接受不同基数的数字 ==> &#61550;        [base#n]        n表示基数从2到36任意基数.
如: $ echo $[10#8+191]

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 07:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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