linux,shell学习(二)

[align=center][b]变量和运算符[/b][/align]
[b]1.什么是shell变量[/b]
[b]2.本地变量[/b]
variable_name=value
set查看本地变量
readonly variable_name 变量值不能被改变
readonly查看只读的变量
[b]3.环境变量[/b]
环境变量是适用于所有用户进程(通常称为子进程)。登录进程称为父进程。shell中执行的用户进程均称为子进程。不像本地变量只用于现在的shell,环境变量可用户所有子进程,这包括,编辑器,脚本,应用。
位置:$HOME/.bash_profile()(/etc/profile(所用用户))
[b]/etc/profile:[/b]此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
[b]/etc/bashrc:[/b]为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
[b]~/.bash_profile:[/b]每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
[b]~/.bashrc:[/b]该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
[b]~/.bash_logout:[/b]当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
[color=green]~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。[/color]
[i]变量的显示,如:test="this is test" echo ${test}[/i]
[b]4.变量替换(显示变量)[/b]
[table]
|${variable name}|显示实际值到variable name|
|${variable name:+value}|如果设置了variable name则显示其值,否则,为空|
|${variable name:?value}|如果未设置variable name,则显示用户定义的错误信息value|
|${variable name:-value}|如果未设置variable name,则显示value|
|${variable name:=value}|如果未设置variable name,则设置其值并显示。|
[/table]
[b]变量的清除:[/b]
unset variable_name
readonly 变量不能重置值,也不能取消或清除
export:设置环境变量
env:显示当前用户的环境变量;
set:显示和设置变量
[b]5.位置变量[/b]
定义:位置变量表示$0,$1,$2,....$9
$0 $1 $2 $3 $4
脚本名 A B C D
向脚本中使用位置参数;
向系统命令传递参数;
例:./test<在程序中进行替换>
[code="shell"]#vi /test #创建并编辑/test文件
#!/bin/bash
#test
echo "这是脚本的第一个名称: $0"
echo "这是脚本的第二个位置参数: $1"
echo "这是脚本的第三个位置参数: $2"
echo "这是脚本的第四个位置参数: $3"
echo "这是脚本的第五个位置参数: $4"
#chmod u+x ./test #加执行权限;
#./test A B C #加参数证验
echo "这是脚本的第一个名称: ./test
echo "这是脚本的第二个位置参数: A
echo "这是脚本的第三个位置参数: B
echo "这是脚本的第四个位置参数: C
echo "这是脚本的第五个位置参数:
[/code]
[b]<向系统命令中传递位置参数>[/b]
[code="shell"]
#vi test1.sh #新建一个脚本文件
#!/bin/bash
find /opt/ -name $1 -print
$2 #系统命令
#chmod u+c test1.sh
#./test1.sh
/opt/mysofts[/code]
[b]6.标准变量[/b]
bash默认建立一些环境变量就是标准变量,可以通俗的说就是不是你加的而是装好机子带的那些环境变量, 可在/etc/profile中进行定义,命令 意义
HOME 用户主目录
IFS 默认分隔符
MAIL 邮箱地址
MAILCHECK 邮箱检查间隔(秒)
PWD 用户当前工作目录
LOGNAME 当前用户登录名
[b]7.特殊变量[/b]
命令 意义
$# 传递到脚本的参数列表
$? 前个命令执行情况,0成功,其它值失败
$$ 脚本运行的当前进程号
$! 运行脚本最后一个命令
$* 显示脚本全部参数
[b]8.影响变量的命令[/b]
declare 设置或显示变量
-f 只显示函数名
-r 创建只读变量
-x 创建转出变量
-i 创建整数变量
使用"+"代替"-",可以颠倒选项的意思,-r除外,
export 用于传递给子shell的变量
-- 表明选项结束,所有后续参数都是实参,
-f 表明在"名-值"对中的名字是函数名,
-n 把全局变量转换成局部变量,换句话就是不再传给shell
-p 显示全局变量列表,
shift:用于移动位置变量,调整位置变量,使$3的值赋给$2.$2的值赋予$1.
[b]运算符[/b]
顾名思义就是告诉计算机哪些数值应该用哪种运算符进行运算,+,-,*,\,通过表达式对变量,数字,字符用的运算的符号就叫运算符;
通常表达式:是运算符和数字,变量,字符对象的集合体;
[b]1 运算符类型;[/b]
按位运算符;在其它语言中经常见到哦,
~,<<,>>,|,^
$[]表示形式告诉shell求中括号中的表达式的值;
$[ 2+8 ]
[b]运算符 说明 [/b]
~var 反运算符,把var中所有的二进制为1的变为0,为0的变为1
var< 出的各位,最右端的各位上补上0值,每做一次按位左移就有实
var乘2;
var>>str 右移运算符,把var中所有的二进制位向右移动str位,忽略最右
移出的各位,最左的各位上补0,每次做一次右移就有实现var除以2,
var&str 与比较运算符,var和str对应位,对于每个二进制来 说,如果二都为1,结果为1.否则为0;
var^str 异域运算符,比较var和str对应位,对于二进制来说,如果二者互补,结果为1,否则为0;
var | str 或运算符,比较var和str的对应位,对于每个二进制来说,如二都该位有一个1或都是1,结果为1,否则为0;
[b]逻辑运算符[/b]
&& 1 1才为1
|| 有一个1即为1
赋值运算符.+=,==,^=.|=
let count =$count +=$change
[b]2.表达式替换[/b]
也就是刚才用的$[]等同于$(())
运算符的优先级
级别 运算符 说明
1 =,+=,-=,/=,
%=,*=,&=,^=, 赋值运算符
|=,<<=,>>==
2 || 逻辑或
3 && 逻辑与
4 | 按位或
5 ^ 按异位与
6 & 按位与
7 ==,!= 等于/不等于
8 <=,>=,<,> 大于或等于/小于或等于/大于/小于
9 <<,>> 按位左移/按位右移
10 +,- 加减
11 *,/,% 乘,除,取模
12 ! ,~ 逻辑非,按位取反或补码
13 -,+ 正负
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值