【发布时间】:2011-03-28 20:35:04
【问题描述】:
我在运行下面的脚本时遇到了问题(请注意,在 Cygwin on win 7 中)。 让我们称之为“myscript.sh” 当我运行它时,以下是我输入的内容:
年月:2011-03
日模式:2{5,6,7}
日志文件名:错误*
查询:警告
#! /bin/bash
yearmonth=''
daypattern=''
logfilename=''
sPath=''
q=''
echo -n "yearmonth: "
read yearmonth
echo -n "daypattern: "
read daypattern
echo -n "logfilename: "
read logfilename
echo -n "query: "
read q
cat "$yearmonth/$daypattern/$logfilename" | grep --color $q
我得到的输出是:
cat: /2011-03/2{5,6,7}/error* 没有 文件目录存在。
但是,如果我输入 daypattern=25 或 daypattern=26 等,脚本将起作用。 此外,当然,如果我在 shell 本身中键入命令,通配符会按预期扩展。 但这不是我想要的。 我希望能够提示用户根据需要输入表达式,然后在脚本中执行这些命令。
有什么想法可以做到吗?
非常感谢您的帮助。
【问题讨论】:
-
不要引用字符串(但这是对 cat 的无用使用,因为下面来自 jabbie 的最佳答案)
标签: linux shell wildcard expansion