由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - bash script真难看懂
相关主题
any body help me about these sentence in the shell script?问问应该学用那个shell?
如何从Bash script1 call Bash script2 ? 愿意发包子求指教!sed 和 bash script 求助
shell script和variable index问两个Linux 的问题
求助:bash里面break 和exit命令不能提前终止循环求助一个bash脚本问题
shell script question找不到命令的路径
how to escape $ in shell script?问个简单的命令
shell scripting 求助Bash Programming
bash "." command新手想学bash scripting。
相关话题的讨论汇总
话题: eval话题: main话题: usage话题: options话题: abstract
进入Linux版参与讨论
1 (共1页)
g****g
发帖数: 1828
1
这个我都快读晕了。
#!/bin/bash
# Light weight option parser for bash
#
abstract=""
usage="Usage: \${0##*/} [options] [arg1] [arg2] ..."
function Abstract()
{
abstract=$@
}
function Usage()
{
usage=$@
}
function Option()
{
eval "options=\"$options $1,$2,$3\""
eval "main_help=\"$main_help \t -$1,--$2\n\""
eval "main_help=\"$main_help \t $4\n\n\""
}
function OptionWithArgument()
{
ARGUMENT=`echo $3 | tr a-z A-Z`
eval "options_warg=\"$options_warg $1,$2,$3\""
eval "main_help=\"$main_help \t -$1 $ARGUMENT, --
o**n
发帖数: 1249
2
复杂一些的东西就用python/perl之类的吧,别shell了。

【在 g****g 的大作中提到】
: 这个我都快读晕了。
: #!/bin/bash
: # Light weight option parser for bash
: #
: abstract=""
: usage="Usage: \${0##*/} [options] [arg1] [arg2] ..."
: function Abstract()
: {
: abstract=$@
: }

v*****r
发帖数: 1119
3
shell 并不难,如果了解了用两只手就能数清的 special variables ($#, $-, $?, $!
,$@ ...), glob patten matching etc. 而且 shell 的这些东西都 natually built
into Perl, 对真正理解 Perl 也是必需的。
一般给自己的 shell script 加个 option parser 用不着这么复杂,用 shell
builtin 的 getopt/getopts, 或者用 case + while [ $# -gt 0 ],如果 options 不
多的话,不需要几行 code。
你这个 script 好象是个 parse generator, 用来给带着超级多 options 的 shell
script 自动产生 case statement 的 (case + while [ $# 。。。 】), 如果能贴
个使用的例子就清楚了

【在 g****g 的大作中提到】
: 这个我都快读晕了。
: #!/bin/bash
: # Light weight option parser for bash
: #
: abstract=""
: usage="Usage: \${0##*/} [options] [arg1] [arg2] ..."
: function Abstract()
: {
: abstract=$@
: }

g****g
发帖数: 1828
4
真是牛人,这么复杂的script,也能理出头绪。下面是另一个script用到前面那个
script的部分code。应该够用了。
# Importing the option parser
. $SRT_PRIVATE_CONTEXT/*******************/OptionParser.sh
# Description of the script
Abstract \${0##*/} - Merge a set of root files defined by a expresion.
# Description of how to use the script
Usage \${0##*/} "-n -p|-r [-d] dir1 [dir2] ..."
# Defining the parameters to be parsed
OptionWithArgument n name name 'Name of the merged file.'
OptionWithExpression p pattern pattern 'Pattern for matching fil

【在 v*****r 的大作中提到】
: shell 并不难,如果了解了用两只手就能数清的 special variables ($#, $-, $?, $!
: ,$@ ...), glob patten matching etc. 而且 shell 的这些东西都 natually built
: into Perl, 对真正理解 Perl 也是必需的。
: 一般给自己的 shell script 加个 option parser 用不着这么复杂,用 shell
: builtin 的 getopt/getopts, 或者用 case + while [ $# -gt 0 ],如果 options 不
: 多的话,不需要几行 code。
: 你这个 script 好象是个 parse generator, 用来给带着超级多 options 的 shell
: script 自动产生 case statement 的 (case + while [ $# 。。。 】), 如果能贴
: 个使用的例子就清楚了

v*****r
发帖数: 1119
5
谢谢例子,把 option parser 和 main script 分开估计是想modularize, 但你们这个
parsergenertor 是有点 overcomplicated 了,而且又不能被 generalized 到其他
scripts 上。 Shell 不难,但写出 easily readable shell 是不容易.
BTW, 推荐一本书给你:Portable Shell Programming
http://www.amazon.com/Portable-Shell-Programming-Extensive-Collection/dp/0134514947
1 (共1页)
进入Linux版参与讨论
相关主题
新手想学bash scripting。shell script question
问一个run bash-script command several times的问题how to escape $ in shell script?
以下的script能成立吗?应该怎么实现?shell scripting 求助
zsh的确好用,希望主流distro用这个做defaultbash "." command
any body help me about these sentence in the shell script?问问应该学用那个shell?
如何从Bash script1 call Bash script2 ? 愿意发包子求指教!sed 和 bash script 求助
shell script和variable index问两个Linux 的问题
求助:bash里面break 和exit命令不能提前终止循环求助一个bash脚本问题
相关话题的讨论汇总
话题: eval话题: main话题: usage话题: options话题: abstract