请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
zsneoks
帖子: 43
注册时间: 2010-04-21 19:08

请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#1

帖子 zsneoks » 2011-10-29 6:39

请教一个问题,就是cat参数中的路径带空格。
一般是在路径上加引号的。
我用find命令找了一些文本文件。然后用cat把这些文件打印到标准输出。命令行如下

代码: 全选

cat $(find .  -name aaa )
但是这样有一个问题,那就是如果有路径中出现空格就出问题了。于是我就想给它加上引号。我是用awk加上的引号。

代码: 全选

cat $(find . -name aaa|awk '{print "\""$0"\""}')
但是这样cat却提示说该文件或目录不存在。
请问这是怎么回事呢?cat对参数是怎么识别的啊?
这深深沉沉的夜...
不正应做点什么。。。
头像
zsneoks
帖子: 43
注册时间: 2010-04-21 19:08

Re: 请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#2

帖子 zsneoks » 2011-10-29 6:52

它提示找不到的那文件是带引号的文件路径。
而我手动去cat一下那个找不到的路径却是可以的。
这深深沉沉的夜...
不正应做点什么。。。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#3

帖子 fnan » 2011-10-29 21:38

cat $(find . -name aaa|awk '{print "\""$0"\""}')
命令替换不对里面的引号再解释:

代码: 全选

eval cat $(find . -name aaa|awk '{print "\""$0"\""}')
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
zsneoks
帖子: 43
注册时间: 2010-04-21 19:08

Re: 请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#4

帖子 zsneoks » 2011-10-30 17:30

fnan 写了:
cat $(find . -name aaa|awk '{print "\""$0"\""}')
命令替换不对里面的引号再解释:

代码: 全选

eval cat $(find . -name aaa|awk '{print "\""$0"\""}')
貌似不是不解释的问题,加上eval仍然不管用。
这深深沉沉的夜...
不正应做点什么。。。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#5

帖子 fnan » 2011-10-30 18:08

#无图无真相:
kose3@kose3-laptop:~/b$ ls
a b.t b c.t
kose3@kose3-laptop:~/b$ eval cat $(find . -name '*.t'|awk '{print "\""$0"\""}')
11
22
kose3@kose3-laptop:~/b$ cat $(find . -name '*.t'|awk '{print "\""$0"\""}')
cat: "./a: No such file or directory
cat: b.t": No such file or directory
cat: "./b: No such file or directory
cat: c.t": No such file or directory
kose3@kose3-laptop:~/b$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
zsneoks
帖子: 43
注册时间: 2010-04-21 19:08

Re: 请教一个关于cat参数中有带空格的路径加上引号却找不到该文件或目录的问题

#6

帖子 zsneoks » 2011-11-01 3:03

fnan 写了:#无图无真相:
kose3@kose3-laptop:~/b$ ls
a b.t b c.t
kose3@kose3-laptop:~/b$ eval cat $(find . -name '*.t'|awk '{print "\""$0"\""}')
11
22
kose3@kose3-laptop:~/b$ cat $(find . -name '*.t'|awk '{print "\""$0"\""}')
cat: "./a: No such file or directory
cat: b.t": No such file or directory
cat: "./b: No such file or directory
cat: c.t": No such file or directory
kose3@kose3-laptop:~/b$
:em20 :em20 :em20
灵异了。果然行。
那天不行。
:em20 :em20 :em20
这深深沉沉的夜...
不正应做点什么。。。
回复