我试图在路径中使用输入变量$ 1
if [ -d "$1" ]; then
echo "The Directory Exists"
files=`find /cygdrive/c/2014-03-19 -name "*ellow.txt"`
for file in $files; do
etc...
现在,我不想使用日期,而是使用1美元(作为用户输入的变量)来使用他们想要使用的目录。 / cygdrive / C / $ 1但我不认为这可以在后面滴答作响。有什么建议?我已经尝试为$ 1分配一个变量名,但它仍然是字面意思的相同问题。我怎么能在这条路径中使用变量?
干杯小伙子。
答案 0 :(得分:2)
在这些情况下确实会出现扩张。也就是说,正确使用find
需要注意;这些文件名是由软件错误或恶意企图创建的,很容易做出破坏不寻常文件名的事情。
if [ -d "/cygdrive/c/$1" ]; then
while IFS='' read -r -d '' file; do
something_with "$file"
done < <(find "/cygdrive/c/$1" -name '*ellow.txt' -print0)
else
echo "$1 is not a directory" >&2
fi
参考文献:
$(find ...)
构造的需要)答案 1 :(得分:1)
是的,变量在反引号中扩展:
> test=foo
> echo `echo $test`
foo
所以你的脚本应该按照书面形式工作。
通常认为使用$()
更好的做法(除非您需要与不支持该构造的旧平台兼容)。这几乎等同于反引号,但它允许嵌套(并且更清晰)。
编辑:虽然这是问题的答案,但Charles Duffy指出了脚本的其他几个问题。一般来说,这些问题只影响&#34; odd&#34;名称(包括空格和通配符),但如果任何可能会在这样的上下文中运行您的脚本,那么应该考虑这些问题。 (如果这不仅仅是一次性的单会话功能定义,那么,是的,它有可能在你不期望的环境中重复使用。)