0
我在bash脚本中使用find
搜索文件夹并存储其路径。“find”删除bash中的多个空格
线如下:
findfolder=$(eval echo $(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1"))
和它的作品几乎在任何情况下,但是,出于某种原因,如果我搜索了其在这两个空格的文件夹,它会返回一个路径,其中所有的双重空间已被转换为单个空间。
所以,如果我在寻找一个文件夹名为“我的音乐”与“我”和“音乐”之间的两个空间,它将返回“我的音乐”一个空间。
如果我在终端直接运行完全相同的命令,我会得到正确的文件夹。
这是怎么发生的? (让我知道是否需要更多的代码,因为我从终端运行完全相同的命令,似乎并不相关,不过我们现在不需要明显的原因墙)。
编辑:
它现在的工作。第一个eval或回声(不确定,但我的测试表明它是eval)导致输出崩溃,消除“不必要的”间距。工作代码是:
findfolder="$(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1")"
有趣。但是,你需要双$($())和evals吗? – 2012-03-31 21:28:30
@PéterVarga在使用eval之前,我没有得到它的工作。他们解决了使用echo将变量分配给变量的问题。 – keyser 2012-03-31 21:30:13
@PéterVarga我现在解决了它。第一个评估和回声是不需要的,并正在导致崩溃。奇怪的是,我在某些时候发现他们是必要的 – keyser 2012-03-31 21:42:07