linux:访问包含空格的目录

时间:2011-05-19 06:31:37

标签: bash shell whitespace

在脚本中,我有这一行

#!/bin/sh

log="${var}logs/console logs/since2_%m-%d-%Y.log" # <-- console logs has a space

如何访问此文件?

把引号像:

log="${var}logs/"console logs"/since2_%m-%d-%Y.log"

取消它周围的引号,并且转义引号使其尝试查找包含字符“

的文件

5 个答案:

答案 0 :(得分:3)

您遇到的麻烦可能就是您使用$ log的地方,您可能应该使用“$ log”来保留空格。

答案 1 :(得分:2)

问题不在于问题所引用的内容。这是一个有效的示例脚本。除了定义之外,请注意$ log的USAGE周围的引号。如果您需要进一步的帮助,请发布完整的脚本或人们可以运行的最小工作子集来重现问题。

#!/bin/sh
var=/tmp/
log="${var}logs/console logs/since2_%m-%d-%Y.log"
mkdir -p "$log"
rmdir "$log"
fortune | tee "$log"
echo ----
cat "$log"

答案 2 :(得分:1)

变量$ IFS包含字段分隔符,默认情况下为空格,因此请尝试使用

oldifs="$IFS"
IFS="
"

log="${var}logs/console logs/since2_%m-%d-%Y.log"

# do whatever you want with $log now

IFS=$oldifs

答案 3 :(得分:0)

如果您打算在该文件名中包含今天的日期:

log="$(date "+${var}logs/console logs/since2_%m-%d-%Y.log")"
touch "$log"

我建议您使用%Y-%m-%d,因为它按时间顺序和词汇排序。

答案 4 :(得分:-2)

我认为log="${var}logs/console\ logs/since2_%m-%d-%Y.log"应该有效。试试一次 我们的想法是逃避[SPACE]