免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 29316 | 回复: 10
打印 上一主题 下一主题

typeset的常见用法  关闭 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-13 18:34 |只看该作者 |倒序浏览
typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的,下面以ksh为例,演示typeset的几种典型用法



1,无选项的执行typeset,则显示所有变量
/home/lee#typeset
typeset COLORS
typeset -x COLORTERM
typeset -x DISPLAY
typeset -x GDMSESSION
typeset -x GNOME_DESKTOP_SESSION_ID
typeset -x GTK_RC_FILES
typeset -x G_BROKEN_FILENAMES
typeset -x HISTSIZE
typeset -x HOME
typeset -x HOSTNAME
typeset IFS
typeset -x INPUTRC
typeset -r KSH_VERSION
typeset -x LANG
typeset -x LANGUAGE
typeset -x LESSOPEN
typeset -x LOGNAME
typeset -x LS_COLORS
typeset -x MAIL
typeset -i MAILCHECK
typeset -i OPTIND
typeset -x PATH
typeset -i PPID
typeset -x PS1
typeset PS2
typeset PS3
typeset PS4
typeset -x PWD
typeset -i RANDOM
typeset -i SECONDS
typeset -x SESSION_MANAGER
typeset -x SHELL
typeset -x SHLVL
typeset -x SSH_AGENT_PID
typeset -x SSH_ASKPASS
typeset -x SSH_AUTH_SOCK
typeset SUPPORTED
typeset -x TERM
typeset -i TMOUT
typeset -x USER
typeset -x USERNAME
typeset -x WINDOWID
typeset -x XAUTHORITY
typeset -x XMODIFIERS
typeset _

2:typeset的-u选项可以将一个变量的字符变成大写
/home/lee#typeset -u var=abc
/home/lee#echo $var
ABC

3:typeset的-l选项将一个变量的字符变成小写
/home/lee#typeset -l var=ABC
/home/lee#echo $var
abc

4:typeset的-L选项把变量变成一个左对齐的4个字符串,有些像字符串截取
/home/lee#typeset -L4 var=abcdefg
/home/lee#echo $var
abcd

5:typeset的-R选项把变量变成一个右对齐的4个字符串
/home/lee#typeset -R4 var=abcdefg
/home/lee#echo $var
defg

6:typeset的-Z选项把串变成一个空填充,占15个字符位的串,冒号用来保护空白符
/home/lee#typeset -Z15 var="abc ddd"
/home/lee#echo "$var"
^^^^^^^^abc ddd #^为空白
/home/lee#typeset -LZ15 var="abc 123"
/home/lee#echo "$var$var"
abc 123 abc 123

7:变量n是一个被设置成一个整数的变量,typeset命令将整数n前面补齐0,共15个字符位
/home/lee#typeset -i n=24
/home/lee#typeset -Z15 n
/home/lee#echo $n
000000000000024

8:变量answer被给定一个值--Yes并变成一个小写,左对齐,一个字符的串
/home/lee#typeset -lL1 answer=Yes
/home/lee#echo $answer
y

typeset其他用法:
typeset -i num #强制num为一个整数,如:
/home/lee#typeset -i num=10
/home/lee#echo $num
10
/home/lee#typeset -i16 num=10
/home/lee#echo $num
16#a
/home/lee#typeset -i2 num=10
/home/lee#echo $num
2#1010
/home/lee#typeset -i8 num=10
/home/lee#echo $num
8#12

typeset -x #显示被导出的变量
typeset a b c #如果在一个函数里定义,则把a b c创建为局部变量
typeset -r x=var#设置一个只读变量

论坛徽章:
0
2 [报告]
发表于 2005-04-13 18:42 |只看该作者

typeset的常见用法

沙发
谢谢~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-04-13 18:56 |只看该作者

typeset的常见用法

顶顶  

论坛徽章:
0
4 [报告]
发表于 2005-04-13 20:34 |只看该作者

typeset的常见用法

  1. $n=0
  2. $typeset i=n+1
  3. $echo $i
  4. 1
  5. $n=1
  6. $echo $i
  7. 1
复制代码

为什么它不能自动处理n变化后的i赋值?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-04-13 20:59 |只看该作者

typeset的常见用法

当用typeset改变一个变量的属性时,这种改变是永久的!

论坛徽章:
0
6 [报告]
发表于 2005-04-13 21:40 |只看该作者

typeset的常见用法

这个,这么解释似乎有点牵强。也可解释成$i永远等于$n+1啊~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-04-14 00:45 |只看该作者

typeset的常见用法

[quote]原帖由 "一梦如是"]这个,这么解释似乎有点牵强。也可解释成$i永远等于$n+1啊~[/quote 发表:

  还得看书去!
PS:您的代码有误
/home/lee#n=0
/home/lee#typeset i=n+1
/home/lee#echo $i
n+1

  1. n=0;while ((n<=10));do
  2.     typeset -i m=n+1;echo $m;((n++))
  3. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-04-14 10:30 |只看该作者

typeset的常见用法

笔误,
  1. typeset -i i=n+1
复制代码

我知道shell是这么解释的,但奇怪为什么typeset不把i=n+1也当作定义i的属性,以实现类似perl的那种变量自动处理功能

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-04-14 10:48 |只看该作者

typeset的常见用法

[quote]原帖由 "一梦如是"]我知道shell是这么解释的,但奇怪为什么typeset不把i=n+1也当作定义i的属性,以实现类似perl的那种变量自动处理功能[/quote 发表:

够怪异!
青青世界 该用户已被删除
10 [报告]
发表于 2005-08-18 23:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP