shell中的变量及运算符



变量赋值与环境

语法

        export name[=word]

        export –p

        readonly name[=word]

        readonly –p

export用于修改或打印环境变量,readonly使得变量不能修改

export命令仅将变量添加到环境中,如果要从程序的环境中删除变量,要用env命令

env的选项有

        -i:表示用来初始化环境变量,即丢弃任何的继承值,仅传递命令行上指定的变量给程序使用。

        -u varname:表示删除varname环境变量

        -0(zero):表示输出行是以NUL结尾,而不是换行

unset命令从执行中的shell中删除变量与函数

unset –f function用来删除函数

unset [-v] variable:不加-v表示删除variable,-v表示删除除variable的变量

 

替换运算符

${varname:-word}:如果varname存在且非null,则返回其值,否则返回word,用途:如果变量未定义,则返回默认值

${varname:=word}:如果varname存在且非null,则返回其值,否则设置它为word,并返回其值,用途是如果变量未定义,设置变量为默认值

${varname:?word}:如果varname存在且非null,则返回它的值,否则,显示varname:message,并退出当前的命令或脚本。用途是为了捕捉由于变量未定义所导致的错误

${varname:+word}:如果varname存在且非null,则返回word,否则,返回null,用途是测试变量的存在

上述每个运算符内的冒号都是可选的。如果省略冒号,则将每个定义中的存在且非null部分改成存在,也就是说,运算符仅用于测试变量是否存在。

 

模式匹配运算符

${variable#pattern}:如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分

${variable##pattern}:如果模式匹配于变量值的开头处,则删除匹配的最长部分,并返回剩下的部分

${variable%pattern}:如果模式匹配变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分

${variable%%pattern}:如果模式匹配变量值的结尾处,则删除匹配的最长部分,并返回剩下的部分

 

字符串长度运算符

${#variable}返回$variable值里的字符长度

 

位置参数

位置参数指的是shell脚本的命令行参数,同时也表示在shell函数内的函数参数。它们的名称以单个的整数来命名,当这个整数大于9时,就应该以花括号{}括起来。

$#:表示传递到shell脚本或函数的参数总数

$*,$@:表示所有的命令行参数,这两个参数可用来把命令行参数传递给脚本或函数所执行的程序

“$*”:表示将所有的命令行参数视为单个字符串。等同于”$1 $2…”

“$@”:表示将所有命令行参数视为单独的个体,也就是单独字符串。等同于”$1” “$2” …

shift命令用来截去来自列表的位置参数,由左开始,一旦执行shift,$1的初始值会永远消失,取而代之的是$2的旧值,$2的值变为$3的值,以此类推

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值