当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : bash脚本编写求助
帖子发表于 : 2011-03-06 19:24 
头像

注册: 2006-03-14 10:25
帖子: 652
送出感谢: 1
接收感谢: 5
各位好,我碰到一个脚本编写的问题,让我头疼,求大侠指导

首先有这样一个脚本 myexec
代码:
#!/bin/sh
for i in "$@"; do
    echo $i
done
echo $#


然后有这个脚本 run-script
代码:
#!/bin/sh

A="hello world"
B="good night"
ARGS="$A $B"
./myexec ${ARGS}


运行 run-script 脚本 现在的输出是
代码:
hello
world
good
night
4


我希望得到的结果是
代码:
hello world
good night
2


要求 ./myexec 后面不直接使用 A B 两个变量


页首
 用户资料  
 
2 楼 
 文章标题 : Re: bash脚本编写求助
帖子发表于 : 2011-03-08 9:50 
头像

注册: 2008-06-18 22:02
帖子: 186
送出感谢: 0 次
接收感谢: 1
easy

见贴图
附件:
文件注释: bash echo args
echo_args.png
echo_args.png [ 95.83 KiB | 被浏览 502 次 ]



页首
 用户资料  
 
3 楼 
 文章标题 : Re: bash脚本编写求助
帖子发表于 : 2011-03-08 20:42 
头像

注册: 2006-03-14 10:25
帖子: 652
送出感谢: 1
接收感谢: 5
wenstream 写道:
easy


easy也需要仔细审题啊,题目要求的最后一行说,要求myexec(也就是你的echo_args.sh)后面不直接接A B两个变量

看来ubuntu的人气不旺啊


页首
 用户资料  
 
4 楼 
 文章标题 : Re: bash脚本编写求助
帖子发表于 : 2011-03-08 21:04 
头像

注册: 2008-02-15 0:09
帖子: 852
送出感谢: 0 次
接收感谢: 0 次
不直接AB的话,可以,c=$A ,d=$B
myexec中,echo $i 变成echo "$i"
然后用./myexec $c $d
应该就可以得出要求的结果,不过这样有意义么?


_________________
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.


页首
 用户资料  
 
5 楼 
 文章标题 : Re: bash脚本编写求助
帖子发表于 : 2011-03-09 21:08 

注册: 2009-07-01 22:04
帖子: 919
送出感谢: 0 次
接收感谢: 13
lz不接AB两个变量可能是想让参数形成自动化,但变量里的空格传入参数都变成参数分割代理符号,简单解决方法是用别的符号代理空格:

kose5@kose5-Aspire-4552:~$ cat mye
#!/bin/bash
for i in "$@"; do
echo ${i//\*s\*/ }
done
echo $#
kose5@kose5-Aspire-4552:~$ cat r2
#!/bin/bash
ARGS=("hello world" "good night")
./mye ${ARGS[@]// /*s*}

kose5@kose5-Aspire-4552:~$ ./r2
hello world
good night
2
kose5@kose5-Aspire-4552:~$ ^C
kose5@kose5-Aspire-4552:~$


_________________
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: bash脚本编写求助
帖子发表于 : 2011-03-12 17:29 
头像

注册: 2008-06-18 22:02
帖子: 186
送出感谢: 0 次
接收感谢: 1
easy

见贴图

附件:
文件注释: echo_args.png
echo_args.png
echo_args.png [ 84.04 KiB | 被浏览 411 次 ]



另:不觉得这么做有意思
参数自动化,可以将所有的变量都导进来,Shell的变量如果没有定义的话展开为空,只成为占位符,用法类似于定制Make内置的pattern rule
楼上的办法有个问题,无论怎么选分隔符,$A $B还是有可能包含分隔符
如果用变量保存一长串命令,还有点意思(类似的思想:在lisp里面,数据与命令是统一的)

又另:所有言论仅代表个人意见,与ubuntu论坛人气无关


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译