好像只能用IFS的方法,$@得到的文件名也会被空格截断的。c\nc 写了:如果不用在特殊场合,比如右键脚本什么的,11楼的方法就可以了。poplarc 写了:太棒了,就是这个效果。c\nc 写了:又见到ee的马甲加皮袄了……
简单的方法,并且还能用到nautilus和thunar右键脚本里的:代码: 全选
IFS=$'\n' for f in $*; do echo "$f" done
我之前也想到设置IFS,当时是这样用的IFS="\n",结果发现不行。
请问为什么要写成 IFS=$'\n' 呢?
试试这个就知道$'\n'的意思了(bash手册里搜索 $'string' ):代码: 全选
a=$'\n'; b="\n" echo "$b$a$b"
如何解决$@参数传递中的空格问题?
- poplarc
- 帖子: 43
- 注册时间: 2007-01-20 22:20
- 来自: 深圳
Re: 如何解决$@参数传递中的空格问题?
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 如何解决$@参数传递中的空格问题?
双引号得一直用下去:好像只能用IFS的方法,$@得到的文件名也会被空格截断的。
代码: 全选
#!/bin/bash
for f in "$@"; do # <-- 这里有双引号
file "$f" # <-- 这里也有双引号
done
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- poplarc
- 帖子: 43
- 注册时间: 2007-01-20 22:20
- 来自: 深圳
Re: 如何解决$@参数传递中的空格问题?
不太明白。用管道+read应该怎么做?能给个例子吗?或者给些参考资料?谢谢哈。eexpress 写了:搞不懂你们了。直接管道+read。折腾啥哦。
虽然我多打了一个"
不喜欢""",用\'啊。
bash的for,都扩展一切的。较劲干嘛。

- poplarc
- 帖子: 43
- 注册时间: 2007-01-20 22:20
- 来自: 深圳
Re: 如何解决$@参数传递中的空格问题?
额。加了双引号好像"$@"是可以的。aerofox 写了:双引号得一直用下去:好像只能用IFS的方法,$@得到的文件名也会被空格截断的。代码: 全选
#!/bin/bash for f in "$@"; do # <-- 这里有双引号 file "$f" # <-- 这里也有双引号 done
还有一个问题,如果我想通过脚本启动mplayer,脚本里面的命令行像下面这个样子就可以启动mplayer
代码: 全选
mplayer "$@"
代码: 全选
mplayer "$@" "$params"
-
- 帖子: 15
- 注册时间: 2009-08-13 12:11
Re: 如何解决$@参数传递中的空格问题?
使用"$@" 来接受参数,就可以了。
-
- 帖子: 53
- 注册时间: 2009-09-07 21:21
Re: 如何解决$@参数传递中的空格问题?
学习了,解决了我自己的问题。 

______________________________
* PC :HP Compaq CQ45-147TX
* OS:Archlinux
程序员是值得尊敬的,程序员的双手是魔术师的双手。他们把枯燥无味的代码变成丰富多彩的软件…
________
<疯狂的程序员>
* PC :HP Compaq CQ45-147TX
* OS:Archlinux
程序员是值得尊敬的,程序员的双手是魔术师的双手。他们把枯燥无味的代码变成丰富多彩的软件…
________
<疯狂的程序员>