shell-2.变量,单引号和双引号

2.1变量

按照惯例,shell变量全用大写字母加下划线表示,有两种类型的shell 变量:

  • 1.环境变量:环境变量可以从父进程传给子进程,因此shell进程的环境变量可以从当前shell进程传给fork出来的子进程。

用env或printenv命令可以显示当前shell进程的环境变量

$ env
  • 2.本地变量:只存在于当前shell进程,本地变量是shell特有的概念。

使用set命令可以显示当前shell进程中定义的本地变量环境变量函数

$ set
定义一个变量
$ VARNAME=value      定义变量VARNAME的值为value

一个变量定义后仅存在当前shell进程,它是本地变量

$ env | grep VARNAME
$ set | grep VARNAME 
VARNAME=vaule    

export可以把本地变量导出为环境变量:

$ export VARNAME
$ env | grep VARNAME
VARNAME=vaule

定义变量后直接导出为环境变量

export VARNAME=value
变量删除

unset命令用于删除已定义的环境变量或本地变量。

$ unset VARNAME
变量使用

在定义变量时不用$,取变量值时用$。变量的值都是字符串,对没有定义变量取值,其值为空。

举例

variable.sh脚本如下

#!/bin/sh
echo $SHELL
echo $SHELLabc
echo $SHELL abc
echo ${SHELL} abc

执行:

shell$ ./variable.sh
/bin/bash

/bin/bash abc
/bin/bash abc

2.2命令替换: ` , $()

由反引号扩起来的也是一条命令,shell先执行该命令,然后将输出结果立即代换到当前命令行来。命令行代换也可以用$()表示

举例

$ replace.sh

#!/bin/sh
DATE=`date`
echo $DATE

DATE=$(date)
echo $DATE

执行:

shell$ ./replace.sh
Tue Mar 1 20:56:50 CST 2022
Tue Mar 1 20:56:50 CST 2022

2.3算术代换:$(())

用于算术计算,$(())中的shell变量取值将转换成整数。

举例

calc.sh

#!/bin/sh
VAR=45
echo $(($VAR+3))
$ ./calc.sh
48

2.4单引号:’

用于保持引号内的所有字符的字面值,即使引号内的双引号反斜杠回车也不例外。

举例

single.sh

#!/bin/sh
echo 'abc\"  `date`
de'

单引号内的数据都原样显示:

$ ./single.sh
abc\"  `date`
de

2.5双引号:""

使用双引号保持引号内的所有字符的字面值(回车也不例外),但以下情况除外:

  1. 反引号用于命令替换。
  2. \$用于表示$
  3. \`用于表示反引号
  4. \"用于表示内嵌的双引号
  5. \\用于表示反斜杠 \
  6. 反斜杠用于非以上的情况,仅表示反斜杠
  7. 对变量的取值 $EXAMPLE
举例

double.sh

#!/bin/sh
echo "$SHELL"
echo "`date`"
echo "I'd say:\"Go for it\""
echo "\\"
$ ./double.sh
/bin/bash
Tue Mar 1 20:59:50 CST 2022
I'd say:"Go for it"
\

参考

Linux C编程一站式学习

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值