linux bash shell之declare

declaretypeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。命令typeset也可以在ksh脚本中运行。

declare/typeset 选项

-r 只读
   1 declare -r var1

(declare -r var1readonly var1作用相同)

这大致和C的const限定词相同.一个试图改变只读变量值的操作将会引起错误信息而失败.

-i 整数
   1 declare -i number2 # 脚本余下的部分会把"number"当作整数看待.       3 4 number=35 echo "Number = $number"     # Number = 36 7 number=three8 echo "Number = $number"     # Number = 09 # 脚本尝试把字符串"three"作为整数来求值(译者注:当然会失败,所以出现值为0).

某些算术计算允许在被声明为整数的变量中完成,而不需要特别使用expr或let来完成。

   1 n=6/32 echo "n = $n"       # n = 6/33 4 declare -i n5 n=6/36 echo "n = $n"       # n = 2
-a 数组
   1 declare -a indices

变量indices会被当作数组.

-f 函数
   1 declare -f

在脚本中没有带任何参数的declare -f 会列出所有在此脚本前面已定义的函数出来。

   1 declare -f function_name

declare -f function_name则只会列出指定的函数.

-x export
   1 declare -x var3

这样将声明一个变量作为脚本的环境变量而被导出。

-x var=$value
   1 declare -x var3=373

declare命令允许在声明变量类型的时候同时给变量赋值。


例子 9-21. 用declare来声明变量类型

   1 #!/bin/bash2 3 func1 ()4 {5 echo This is a function.6 }7 8 declare -f        # 列出上面的函数.9 10 echo11 12 declare -i var1   # var1是一个整数.13 var1=236714 echo "var1 declared as $var1"15 var1=var1+1       # 整数声明后,不需要使用'let'.16 echo "var1 incremented by 1 is $var1."17 # 试图将已声明为整数的变量的值更改为浮点值.18 echo "Attempting to change var1 to floating point value, 2367.1."19 var1=2367.1       # 引起一个错误信息,此变量的值保持原样.20 echo "var1 is still $var1"21 22 echo23 24 declare -r var2=13.36         # 'declare'允许设置变量的属性,25                               #+ 同时也给变量赋值.26 echo "var2 declared as $var2" # 试图更改只读变量的值.27 var2=13.37                    # 引起错误,并且从脚本退出.28 29 echo "var2 is still $var2"    # 这行不会被执行.30 31 exit 0                        # 脚本不会从这儿退出.

使用内建的declare来限定变量的范围.

   1 foo ()2 {3 FOO="bar"4 }5 6 bar ()7 {8 foo9 echo $FOO10 }11 12 bar   # 打印 bar.

然而 . . .

   1 foo (){2 declare FOO="bar"3 }4 5 bar ()6 {7 foo8 echo $FOO9 }10 11 bar  # 什么也不打印.12 13 14 # 多谢Michael Iatrou指出这一点.
Have a nice day!!!

linux bash shell之declare相关推荐

  1. linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法

    linux bash shell之变量替换::=句法.=句法.:-句法.-句法.=?句法.?句法.:+句法.+句法 变量替换和变量默认值设置是紧密相关的,至少从概念出发是如此. 参数扩张是将类似于变量 ...

  2. linux bash and,linux bash shell中for的用法and示例

    关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用 ...

  3. linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件

    linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件 wget --load-cookies /tmp/cookies.txt "https:// ...

  4. linux bash java,从Linux Bash Shell配置NIC

    我有戴尔笔记本电脑运行以下版本的RedHat Linux:2.6.18-53.el5#1 SMP Wed 10月10日16:34:02 EDT 2007 i686 i686 i386 GNU / Li ...

  5. Linux bash shell基础语法

    转自:http://blog.sina.com.cn/s/blog_46177c3401014fty.html 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时 ...

  6. linux emacs命令,Linux Bash Shell 终端 Terminal Emacs 模式 常用 快捷键 命令

    背景: OS:Ubuntu 16.04 Bash 的编辑模式:Emacs 模式 本文介绍的快捷键 仅当 您的 Bash 的编辑模式 为 Emacs 模式 时 有效,Bash 默认的编辑模式为 Emac ...

  7. Linux Bash Shell j简单入门

    BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     ...

  8. Linux Bash Shell编程快速入门

    BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     ...

  9. Linux Bash Shell学习(十八):String I/O——echo和printf

    本文也即<Learning the bash Shell>3rd Edition的第七章Input/Output and Command-Line Processing之读书笔记之二. e ...

最新文章

  1. 国家计算机病毒中心发现“网游大盗”新变种
  2. 理解Kubernetes(2): 应用的各种访问方式
  3. [工具向]__androidstudio签名打包apk及配置自动签名
  4. java mysql开发_Java数据库开发
  5. 使用RichTextBox控件实现系统剪切板功能
  6. windows系统c++多线程开发
  7. qtabwidget放大_Qt自定义弹窗屏蔽父窗口(QWidget设置setWindowModality(Qt::ApplicationModal);以后再show)...
  8. 百度网盘不限速下载神器献给你
  9. 命令行导出和导入数据库 How to export and import MySQL database using command line Interface...
  10. 8Python全栈之路系列之Django Cookie 与Sessi
  11. Redis学习(1)NoSQL非关系型数据库、Redis概述、Linux安装Redis
  12. 面积积分_新市民随迁子女积分入学指标调整 房产建筑面积每平方米积1分
  13. 偏微分方程数值解的matlab 实现,偏微分方程数值解的Matlab 实现
  14. 诺诺开放平台(电子发票、智能编码、发票查验接口调用)
  15. Android关键字persistent
  16. Oracle Spatial详解
  17. JS 缓存: Service Worker 实现离线应用
  18. 使用批处理解决U盘内出现的同名文件夹EXE病毒问题
  19. Oxyplot实时绘图学习笔记(下)
  20. Unreal Engin_画廊制作笔记 _003设置贴花在场景中可见

热门文章

  1. ic卡消费管理系统_智能食堂管理解决方案 智能刷卡消费
  2. Linux Bash 笔记
  3. 5 加盐_工业软水处理器定期加盐的标准
  4. overlay网络的优势
  5. 笔试算法题--汪仔换道具
  6. 以太网的MAC帧(一)
  7. View.setSystemUiVisibility(int) 方法使用
  8. 我在51CTO微职位学软考——网络工程师
  9. c# 串口最简单接收十六进制
  10. Ubuntu 将应用程序 固定到快快速启动栏(以Sublime为例)