无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: chenall
打印 上一主题 下一主题

grub4dos 外部命令 wenv [2010-10-17 ]

  [复制链接]
691#
发表于 2010-11-5 09:47:10 | 只看该作者
2.内置ECHO函数添加两个参数(默认不回车也不转义)
-n 不自动添加回车符
-e 允许转义符
================
应属笔误,测试了一下:
默认不回车,-n 自动添加回车符

[ 本帖最后由 zxw 于 2010-11-5 11:13 编辑 ]
回复

使用道具 举报

692#
发表于 2010-11-5 10:06:09 | 只看该作者
确实,换行跟wenv里的定义正好是反的
看哪种方式比较好,然后再修改一个统一下

========================
原来默认的是回车,不转义

改为默认不回车的话有个空参数运行的问题
echo
这样一句话,可能大多数时候就是希望换行的
默认不回车后就得这样
echo -n,不简洁

以前wenv里即使开关切换为不换行,无参数的 echo 估然会换行的,同步了 -e -n 参数后,我取消了这个特性

[ 本帖最后由 tuxw 于 2010-11-5 10:42 编辑 ]
回复

使用道具 举报

693#
发表于 2010-11-5 10:27:20 | 只看该作者
原来的版本是默认不回车、不转义,为了与以前版本兼容,应该改成:
默认不回车、不转义
-n 添加回车
-e 允许转义
回复

使用道具 举报

694#
发表于 2010-11-5 10:39:07 | 只看该作者
另外,现在的参数前面有些是--,有些是-,不便于用户记忆,应该规范化。
建议所有内部命令用--开头;
            外部命令用-开头。
这样也好分别内部命令与外部命令的区别
如wenv,是外部命令,wenv echo中的echo是wenv的子命令,后面的参数都用-开头;
echo是grldr内部命令,参数开头应该用--开头,如echo --n、echo --e
回复

使用道具 举报

695#
发表于 2010-11-5 10:43:29 | 只看该作者
这个是应该统一下
还有个参数我经常习惯性的多打--
debug status
回复

使用道具 举报

696#
发表于 2010-11-5 10:55:13 | 只看该作者
原帖由 zhaohj 于 2010-11-5 10:27 发表
原来的版本是默认不回车、不转义,为了与以前版本兼容,应该改成:
默认不回车、不转义
-n 添加回车
-e 允许转义

同意这个方案,统一规范一下。
建议所有内部命令用--开头;
            外部命令用-开头。

单字母参数还是统一用-开头为好。保持linux的传统风格。

[ 本帖最后由 zxw 于 2010-11-5 11:04 编辑 ]
回复

使用道具 举报

697#
发表于 2010-11-5 14:12:02 | 只看该作者
试着编译了一个,基于tuxw的wenv修改,与grldr内置echo统一:
1.echo 默认不回车、不转义
  -n 添加回车
  -e 允许转义
2.SWITCH 开关ECHO_LN 默认不换行
========================
看了楼下chenall大关于echo应该统一默认换行,删除附件,以免混乱。

[ 本帖最后由 zxw 于 2010-11-5 15:11 编辑 ]
回复

使用道具 举报

698#
 楼主| 发表于 2010-11-5 15:01:58 | 只看该作者
嗯,搞反了。

另外看了一下linux里面的echo命令
-n不回车

所以还是统一好了。-n不回车,默认加回车。这样才不会乱套。

另外这个只是一个小问题,有没有人测试一个其它是否正常。

因为改动很大(整个函数重写),涉及到所有执行命令相关的操作。可能会有BUG存在。有条件的尽量多试试。

[ 本帖最后由 chenall 于 2010-11-5 15:04 编辑 ]
回复

使用道具 举报

699#
 楼主| 发表于 2010-11-5 15:04:42 | 只看该作者
@zxw
又有新成员加入了,欢迎。
回复

使用道具 举报

700#
发表于 2010-11-5 15:15:45 | 只看该作者
嗯,这样很好:
echo默认回车、不转义
-n 不回车
-e 允许转义

请再放出测试版。

[ 本帖最后由 zhaohj 于 2010-11-5 16:35 编辑 ]
回复

使用道具 举报

701#
 楼主| 发表于 2010-11-5 15:47:36 | 只看该作者
OK,已经上传了。

只是修改了echo命令。
回复

使用道具 举报

702#
发表于 2010-11-5 16:45:47 | 只看该作者
11-5 echo命令测试
1:默认回车    ------------测试ok!
2:-n 不回车   ------------测试ok!
3:默认不转义-------------转义也输出,测试相反
4:-e 允许转义------------转义不输出,测试相反

--------------
哈哈,我倒支持这个方案,不过上下版本不兼容了。

[ 本帖最后由 zhaohj 于 2010-11-5 16:59 编辑 ]

Snap1.jpg (18.01 KB, 下载次数: 88)

Snap1.jpg
回复

使用道具 举报

703#
 楼主| 发表于 2010-11-5 17:15:27 | 只看该作者
好像是正常的呀。。和WENV ECHO的应该是一样的。
回复

使用道具 举报

704#
发表于 2010-11-5 17:15:51 | 只看该作者
建议干脆强化一下:
echo -n 默认只自动加一个回车
echo -n*N  自动加N个回车
回复

使用道具 举报

705#
发表于 2010-11-5 17:17:31 | 只看该作者

回复 #703 chenall 的帖子

zhaohj的意思是说,与以前版本的grldr内置的echo不兼容。
以前内置的echo默认不换行,支持转义输出。恰好都相反。

[ 本帖最后由 zxw 于 2010-11-5 17:22 编辑 ]
回复

使用道具 举报

706#
 楼主| 发表于 2010-11-5 17:23:41 | 只看该作者
原帖由 zxw 于 2010-11-5 17:17 发表
zhaohj的意思是说,与以前版本的grldr内置的echo不兼容。
以前内置的echo默认不换行,支持转义输出。恰好都相反。


不兼容就不兼容了,呵呵反正这个也不算是公开的功能。^_^
回复

使用道具 举报

707#
发表于 2010-11-5 17:31:36 | 只看该作者
只要方案定下来就可以,我现在不知道要实现怎样的目的?
如果抛开以前的grldr方案,现在的方式是我最理想的,我喜欢默认就这样(默认回车,允许转义符\输出)
回复

使用道具 举报

708#
发表于 2010-11-5 20:47:34 | 只看该作者
转义输出并不只要看到 \ 就转义的,还要判断\后是不是合法的转义字符,否则会忽略 \
\n \r \t \\ 都是合法的, 另外一种用法是 \xYY(YY是2位16进制数)

abcd\ef 是不合格的,所以忽略\ 输出  abcdef

下面都是可用的
abc\x0Adef      等效于 abc\ndef
abc\x0def        这行会输出 efc,先输出abc, 然后回车(注意回车跟换行是两个概念,\r,\n)输出ef(覆盖ab,光标停在c处)

WENV echo -e -n abc\x0def && WENV echo -n a          输出 efa

DOS 时代非中文系统中有个很老的打印技巧
"Y\b=", 这样可以在纸上打印一个  ¥ 符号

[ 本帖最后由 tuxw 于 2010-11-5 21:29 编辑 ]
回复

使用道具 举报

709#
发表于 2010-11-5 21:07:52 | 只看该作者
1.修复变量替换BUG:
set a=${b} 变量b不存在时a内容为"${b}" (保持与原版兼容,删除变量a)

2.修复calc问题
calc a=b   变量ab均不存在时添加新变量a=0(原版如此, 现改为无影响)

3.check 命令 <- 查找子串如找到,将设置 ?_WENV 为找到的位置索引,否则设置为-1

    这个索引值有可能会有一些特殊的用途,比如处理变量中间的特殊字符
WENV check -e "\n"<-"${a}" calc ind=${?_WENV}+1
WENV check ${ind}>=1 set a=${a:0:${?_WENV}}${a:${ind}}
上面两条命令可以去掉a中间的换行符

4.其它细节更新

[ 本帖最后由 tuxw 于 2010-11-5 21:26 编辑 ]

wenv-tuxw-2010-11-05.zip

39.45 KB, 下载次数: 21, 下载积分: 无忧币 -2

回复

使用道具 举报

710#
发表于 2010-11-5 23:48:59 | 只看该作者
撤销了楼上的变动2,改动这后会引起一些其它的问题,比如 calc a=1,如变量a不存在,这个命令会失败。等以后想个完善的办法再改这个问题。

wenv-tuxw-2010-11-05.zip

39.38 KB, 下载次数: 25, 下载积分: 无忧币 -2

回复

使用道具 举报

711#
发表于 2010-11-6 00:57:22 | 只看该作者
变量a不存在确实失败:
wenv  calc a=1
这个修正必要。
回复

使用道具 举报

712#
发表于 2010-11-6 01:32:11 | 只看该作者
WENV calc a=a^b
WENV calc a=a|b
WENV calc a=a<<b
...
这几个写法都是无效的

1.修复了calc命令变量简易写法时(只有变量名不带 ${}),操作符 ^,|,>>,<< 无效的BUG
2.修复了calc乘法计算乘号后面有空格时死循环的BUG( 如 calc a=1 * 1)

注意:或运算符 | 跟Grub4Dos管道冲突,calc命令中 | 前后不能同时有空格

[ 本帖最后由 tuxw 于 2010-11-6 02:39 编辑 ]

wenv-tuxw-2010-11-06.zip

39.52 KB, 下载次数: 18, 下载积分: 无忧币 -2

回复

使用道具 举报

713#
发表于 2010-11-6 11:28:05 | 只看该作者
@tuxw:
搜索一下INIFILE,编一个这样的外部命令。
WENV目前功能够强了, 该考虑其他的外部命令了。作为grub4dos的应用,象INIFILE获取段落的功能用处很大。
你C语言很精通,期待出新成果。
回复

使用道具 举报

714#
发表于 2010-11-6 12:14:21 | 只看该作者
INI 文件有固定的格式
[段1]
变量1=值1
变量2=值2
[段2]
变量1=值1
变量2=值2

在这个基础上一般实现两个功能
read  段名 变量名
write 段名 变量名 值

这个要实现的话,可行性比较大。但INI一般不作为一个独立的命令,都是依附于某个软件内,用于读写配置。作为独立命令好象没什么实用性。

你的需求严格的说不是INIFILE的功能,只是显示文件内指定位置的内容。

在Grub4Dos专帖中我传的那个批处理已经满足了这个需求(通用批处理也可以看作是外部命令)。只需要将查找的两个内容用变量代替,就是一个通用的显示文件局部内容的外部命令了。

=============================
还有一种可能的方法是扩展一下read命令

现在read命令很尴尬,因为它只支持简单的子命令,命令连接、条件运行方面的支持很差。Grub4Dos支持批处理后,read命令几乎没有存在的必要了,唯一有用的就是不久前才加入的支持参数的特性,如果将read改造成批处理一样支持较复杂的命令,可以在WENV基础上提供很多通用的“外部命令”。不需要先 set 设置参数,再运行批处理。

[ 本帖最后由 tuxw 于 2010-11-6 12:28 编辑 ]
回复

使用道具 举报

715#
发表于 2010-11-6 13:08:27 | 只看该作者
说明你对inifile比较熟悉的,G4D有很多对配置文件(文本)的操作,有专门这样的命令会方便很多。

对下面怎么应用还不太了解,最好提供个具体的实例,特别是对参数的应用。
WENV READ wenv-bat-file parameters
回复

使用道具 举报

716#
 楼主| 发表于 2010-11-6 23:13:06 | 只看该作者
原帖由 zhaohj 于 2010-11-6 13:08 发表
说明你对inifile比较熟悉的,G4D有很多对配置文件(文本)的操作,有专门这样的命令会方便很多。

对下面怎么应用还不太了解,最好提供个具体的实例,特别是对参数的应用。
WENV READ wenv-bat-file parameters



汗。这个在wenv-readme.txt里面就有介绍的例子啊。
回复

使用道具 举报

717#
发表于 2010-11-6 23:44:03 | 只看该作者
呵呵,已经在使用WENV READ wenv-bat-file parameters功能了。
但批处理需要wenv-command,应用就受限制了。如不能使用其他外部命令。
回复

使用道具 举报

718#
 楼主| 发表于 2010-11-6 23:51:55 | 只看该作者
原帖由 zhaohj 于 2010-11-6 23:44 发表
呵呵,已经在使用WENV READ wenv-bat-file parameters功能了。
但批处理需要wenv-command,应用就受限制了。如不能使用其他外部命令。



目前可以利用wenv 的批处理加参数功能
里面使用echo命令生成一个新的GRUB4DOS批处理文件,这样就可以了。

有可能的话再让GRUB4DOS的批处理也支持参数,这样就比较方便了。
回复

使用道具 举报

719#
发表于 2010-11-6 23:57:42 | 只看该作者
修复 for 命令 bug:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=180142&page=3#pid2079530

wenv-tuxw-2010-11-06.zip

39.53 KB, 下载次数: 15, 下载积分: 无忧币 -2

回复

使用道具 举报

720#
发表于 2010-11-7 00:22:01 | 只看该作者
原帖由 chenall 于 2010-11-6 23:51 发表
目前可以利用wenv 的批处理加参数功能
里面使用echo命令生成一个新的GRUB4DOS批处理文件,这样就可以了。

有可能的话再让GRUB4DOS的批处理也支持参数,这样就比较方便了。


WENV 的 read 命令可以退休了
本来想将 read 改造成 bat,考虑下发现要运行2个 WENV,流产

[ 本帖最后由 tuxw 于 2010-11-7 00:23 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 11:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表