美文网首页
shell-变量

shell-变量

作者: 吃猫的鱼0 | 来源:发表于2018-11-28 22:26 被阅读0次

变量类型

运行shell时,会同时存在三种变量:

  1. 局部变量
    局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2. 环境变量
    所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量
    shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

定义变量

Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"

命名规则

Shell 变量的命名规范和大部分编程语言都一样:

  1. 变量名由数字、字母、下划线组成;
  2. 必须以字母或者下划线开头;
  3. 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如: author="严长生" echoauthor
echo ${author}
建议使用第二种加中括号的

修改变量的值

已定义的变量,可以被重新赋值,如:

url="http://c.biancheng.net"
echo ${url}
url="http://c.biancheng.net/cpp/shell/"
echo ${url}

第二次对变量赋值时不能在变量名前加,只有在使用变量时才能加

单引号和双引号的区别

url="http://c.biancheng.net"
website1='C语言中文网:${url}'
website2="C语言中文网:${url}"
echo $website1
echo $website2

运行结果:
C语言中文网:${url}
C语言中文网:http://c.biancheng.net

以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变
例子:

myUrl="http://see.xidian.edu.cn/cpp/shell/"
readonly myUrl
myUrl="http://see.xidian.edu.cn/cpp/danpianji/"

删除变量

使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用;unset 命令不能删除只读变量。

myUrl="http://see.xidian.edu.cn/cpp/u/xitong/"
unset myUrl
echo $myUrl

变量赋值

Shell 也支持将命令的执行结果赋值给变量,常见的有以下两种方式:
variable=command
variable=$(command)
建议使用第二种

特殊变量

$0  当前脚本的文件名
$n  传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#  传递给脚本或函数的参数个数。
$*  传递给脚本或函数的所有参数。
$@  传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?  上个命令的退出状态,或函数的返回值。
$$  当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

转义字符

\\  反斜杠
\a  警报,响铃
\b  退格(删除键)
\f  换页(FF),将当前位置移到下页开头
\n  换行
\r  回车
\t  水平制表符(tab键)
\v  垂直制表符

命令替换

命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。
命令替换的语法:
command
例子:
DATE=date
echo "Date is DATE" USERS=`who | wc -l` echo "Logged in user areUSERS"
UP=date ; uptime
echo "Uptime is $UP"

变量替换

变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值

{var} 变量本来的值{var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
{var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。{var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。

相关文章

  • shell-变量

    变量类型 运行shell时,会同时存在三种变量: 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效...

  • shell-初步+变量

    1.shell初步了解 1.1 什么是Shell 1.2.什么是Shell脚本 1.3. 脚本语言的种类 She...

  • shell-变量定义

    shell是一种动态类型语言和弱类型语言,即shell中变量类型无需显示声明。shell中的变量是不区数据类型的,...

  • shell-环境变量

    环境变量可以被所有shell脚本使用set | more 列出所有的环境变量 常用的shell环境变量 PATH ...

  • Shell-基础教程-变量

    参考教程链接 http://www.runoob.com/linux/linux-shell.html Shell...

  • Linux Shell-位置参数变量

    位置变量 当我们执行一个Shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如:./my...

  • 2.2.1 Shell-变量的定义到使用

    首先我们通过Vim demo.sh在Vim编辑器中创建一个demo.sh文件 要把shel命令放到一个“脚本”当中...

  • Jenkins脚本上传文件到SVN

    直接上例子1.构建->增加构建步骤->执行shell-复制粘贴->根据自身的需求做相关更改即可

  • shell-命令

    echo echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式:echo arg您可以使用...

  • shell-数组

    Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),...

网友评论

      本文标题:shell-变量

      本文链接:https://www.haomeiwen.com/subject/emlimftx.html