Shell脚本变量定义

http://blog.csdn.net/qyf_5445/article/details/8886071

自定义变量
bash中变量无类型区分
aa=abc123    定义变量并赋值abc123
aa=          定义空变量或者清空变量aa,但变量还存在
export test="hello world"  设定环境变量test
export或者export -p        显示所有环境变量
declare / typeset 选项 变量名
declare 或 typeset 有同样的功能:指定变量属性。如果使用 declare 后面并没有接任何参数,那么 bash 就会主动的将所有的变量名称与内容通通叫出来,就好像使用 set 一样! 
选项:
-a 将后面的变量定义成为数组 (array)
-i 将后面的变量定义成为整数(integer)
-x 将后面的变量变成环境变量,同export 一样,
-r 将后面的变量设定为只读 ,该变量不可被更改内容,也不能 unset
-f 列出脚本中的函数
readonly用来设置只读变量
readonly 变量名
readonly -f 函数名称
readonly -a 数组变量
变量间接引用 eval var1=\$$var2

Shell支持自定义变量。

定义变量

定义变量时,变量名不加美元符号($),如:

代码如下:

variableName="value"

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

•首个字符必须为字母(a-z,A-Z)。
•中间不能有空格,可以使用下划线(_)。
•不能使用标点符号。
•不能使用bash里的关键字(可用help命令查看保留关键字)。

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

代码如下:

for skill in Ada Coffe Action Java
do
    echo "I am good at ${skill}Script"
done

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

重新定义变量

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

代码如下:

your_name="tom"
echo $your_name

your_name="alibaba"
echo $your_name

这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。

时间: 2024-10-05 04:45:03

Shell脚本变量定义的相关文章

shell脚本变量定义注意别跟系统变量重名了……

写了个很简单的脚本,执行结果却很奇怪.   1 #!/bin/bash 2 3 PATH=$HOME/vlc_transplant4 4 5 rm -f $PATH/vlc 6 ln -s $PATH/bin/vlc-static $PATH/vlc 执行结果: [email protected]:~/vlc_transplant4$ ./update.sh ./update.sh: 行 5: rm: 未找到命令 ./update.sh: 行 6: ln: 未找到命令 原因是自己在脚本中定义的P

linux学习之shell脚本 ------- 变量

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell中的一些变量. 变量类型: Shell中有以下几种变量: 1) 本地变量 2) 环境变量 3) 位置变量 4) 标准变量 5) 特殊变量 1) 本地变量 本地变量在用户现在的Shell生命周期的脚本中使用. 用法: variable-name=value set: 可以显示本地所有的变量 注意,本地变量如果加上readonly,则该本地变量不能被修改,

shell脚本变量数值计算

1.算数运算符 执行算数运算就离不开各种运算符号,和其他编程语言一样,shell脚本也有运算符号.常见运算符号如下图所示: 上图中的运算符号常用于常见的运算命令,常用运算命令如下图所示: 2.双小括号"(())"运算命令 2.1 双小括号数值运算的基础语法 双小括号"(())"的作用是进行数值运算与数值比较,它的效率很高. 2.2 双小括号数值运算案例 案例1:利用"(())"进行简单的运算 [[email protected] ~]# echo

Linux mysql shell脚本 变量和环境变量 位置参数 预定义变量 运算符 判断 流程控制 for循环 与用户交互 函数

mysql 1. 卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6.x86_64 rpm -e mysql-libs 删除旧版本 rpm -e --nodeps mysql-libs 强行删除 2. 安装mysql 2.1 安装源码需要编译 下载c的编译工具 yum -y install make gcc-c++ cmake bison-devel ncurses-devel 2.2 xftp连接上传 xftp连接上

Shell脚本变量判断参数命令

系统变量 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值.成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住.若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字.对于shell脚本而言,这是被激活命令的路径 [email protected] 被双引号(” “)包含时,与 $* 稍有不同.若一个脚本接收到两个参数,[email protect

shell脚本中定义路径变量出现的BUG

=========================================================================== if 语句中的定义路径变量 引发命令的PATH路径改变出现的bug 问题 原脚本文件:inotify +rsync 实时共享 #!/bin/bash PATH=/data/ IP=172.16.1.41 cd $PATH &&\ 切换到一个新的变量中了 /usr/bin/inotifywait -mrq --format '%w%f' -e

shell 脚本 变量 获取程序输出结果异常分析

#! /bin/bash pid=$(pgrep hello) echo ${pid} 脚本名称是 hello_test.sh 当hello进程存在时,总是返回两个值 当hello进程不存在时,返回值并不为空,总是返回一个值,多次运行,返回的值并不固定 当然,以上都不是期望的结果. 为什么不存在时,也会返回呢,并且返回值不一样,记得好像有一个内部变量记得上次shell进程的pid, 应该是这样. 经人提醒,脚本是不是也是hello.sh,终于恍然醒悟,脚本名是hello_test.sh,也包含h

shell脚本变量和字符串截取

变量说明:$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的结束代码(返回值)$- 使用Set命令设定的Flag一览$* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n"的形式输出所有参数.[email protected] 所有参数列表.如"[email protected]"用「"」括起来的情况.以"$1″ &quo

《Linux命令行与shell脚本编程大全》 第六章环境变量

很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息. 这项特性允许在内存中存储数据,以便程序能轻松访问到它们. 在bash shell中,分两类: 全局变量:对于shell会话和所有生成的子shell都是可见的 局部变量:只对创建的它们的shell可见 6.1.1全局环境变量 查看全局变量,  $env    $printen