免费注册 查看新帖 |

Chinaunix

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

[SCO UNIX] 关于$0使用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-01 15:10 |只看该作者 |倒序浏览
现在我们开始着眼于$0,这个变量通常被用来决定那些能够被多个名称调用的脚本的状态。请看下面的脚本:
#!/bin/sh
case $0 in
*)listtar) TARGS="-tvf $1" ;;
*maketar) TARGS="-cvf $1.tar $1" ;;
esac
tar $TARGS
这是使用$0特殊变量的例子,我没怎么看懂。还请各位大侠指点!

论坛徽章:
0
2 [报告]
发表于 2004-06-01 15:53 |只看该作者

关于$0使用问题

$0是命令名字,这么理解就行。在你给的脚本中,listtar和maketar是同一个文件,只不过上有2个不同的名字,链接关系。
当你用listtar执行时,就TARGS="-tvf $1"
当你用maketar执行时,就TARGS="-cvf $1.tar $1"
就这么简单。

论坛徽章:
0
3 [报告]
发表于 2004-06-01 16:10 |只看该作者

关于$0使用问题

原帖由 "zhaojinbo" 发表:
$0是命令名字,这么理解就行。在你给的脚本中,listtar和maketar是同一个文件,只不过上有2个不同的名字,链接关系。
当你用listtar执行时,就TARGS="-tvf $1"
当你用maketar执行时,就TARGS="-cvf $1.tar $1"
..........


这个例子让人很难理解.
能用$0这个变量,举一个简单的例子吗?;谢谢!

论坛徽章:
0
4 [报告]
发表于 2004-06-01 17:30 |只看该作者

关于$0使用问题

echo $0
显示的就是执行文件本身的文件名
如果你想在shell程序中引用这个文件名时 你就可以用$0来获取

论坛徽章:
0
5 [报告]
发表于 2004-06-02 16:04 |只看该作者

关于$0使用问题

原帖由 "hsgzr" 发表:
echo $0
显示的就是执行文件本身的文件名
如果你想在shell程序中引用这个文件名时 你就可以用$0来获取


手动写里面不就可以了吗?

论坛徽章:
0
6 [报告]
发表于 2004-06-02 23:24 |只看该作者

关于$0使用问题

有时候你的一个文件有多种功能 也就是一个文件可以拷贝成几个不同的执行文件 你只能动态去获取文件名然后在跳转到程序中的相应语句中  你在执行时并不知道用的是那个文件名 所以不能写进去 只能动态获取
比如UNIX系统下的l 和ls实际上是一个文件的 当用l执行时就要在程序里判断执行文件名如果是l就要以长格式列出 如果执行文件名是ls就以单文件名的形式列出 其中的l和ls就是动态获取的 无法静态指出 当然你可以编译成两份一份是l文件 一份是ls文件 这样就可以静态获取了 但你要写两个程序的代码 要编译成两个文件 。用动态获取只有一个文件就解决了好多问题l ls lc lr等 
明白了吗?

论坛徽章:
0
7 [报告]
发表于 2004-06-03 08:09 |只看该作者

关于$0使用问题

原帖由 "hsgzr" 发表:
有时候你的一个文件有多种功能 也就是一个文件可以拷贝成几个不同的执行文件 你只能动态去获取文件名然后在跳转到程序中的相应语句中  你在执行时并不知道用的是那个文件名 所以不能写进去 只能动态获取
比如..........


谢喽! 偶明白了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP