在脚本中,我有这一行
#!/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"
取消它周围的引号,并且转义引号使其尝试查找包含字符“
的文件答案 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]