bash脚本编写求助

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
bzimage
帖子: 674
注册时间: 2006-03-14 10:25
送出感谢: 1 次
接收感谢: 5 次

bash脚本编写求助

#1

帖子 bzimage » 2011-03-06 19:24

各位好,我碰到一个脚本编写的问题,让我头疼,求大侠指导

首先有这样一个脚本 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 两个变量
头像
wenstream
帖子: 186
注册时间: 2008-06-18 22:02
送出感谢: 0
接收感谢: 1 次

Re: bash脚本编写求助

#2

帖子 wenstream » 2011-03-08 9:50

easy

见贴图
echo_args.png
bash echo args
头像
bzimage
帖子: 674
注册时间: 2006-03-14 10:25
送出感谢: 1 次
接收感谢: 5 次

Re: bash脚本编写求助

#3

帖子 bzimage » 2011-03-08 20:42

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

看来ubuntu的人气不旺啊
头像
ebok
帖子: 852
注册时间: 2008-02-15 0:09
送出感谢: 0
接收感谢: 0

Re: bash脚本编写求助

#4

帖子 ebok » 2011-03-08 21:04

不直接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.
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

Re: bash脚本编写求助

#5

帖子 fnan » 2011-03-09 21:08

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++强悍,不过可以用。
头像
wenstream
帖子: 186
注册时间: 2008-06-18 22:02
送出感谢: 0
接收感谢: 1 次

Re: bash脚本编写求助

#6

帖子 wenstream » 2011-03-12 17:29

easy

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

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

回到 “Shell脚本”