If I do this:
ls ~/Dev/Project/Assets/_Core/
我得到了一个超级棒的目录列表!太好了!但是如果我这样做:
assetsPath=$(head -n 1 .config | perl -ne 'print if s/^assets=(.*)/\1/g')
echo $assetsPath
ls $assetsPath
我得到:
~/Dev/Project/Assets/_Core/ # this was the variable value from the echo
ls: ~/Dev/Project/Assets/_Core/: No such file or directory
我甚至尝试使用
${assetsPath}
,但那也没有起作用?
~
(波浪线)扩展。你不能将它放在一个变量里。使用$HOME
或者不要把它放在变量中。 - Etan Reisner$HOME
)。只需让他们将值写出来(或者如果您已经在那里扩展了shell变量,请让他们使用$HOME
)。 - Etan Reisnerif [[ $assetsPath == *[^/.~a-zA-Z0-9]* ]]; then echo "preventing bad things from happening!!"; exit 1; fi
,否则此解决方案不合法。 - that other guyeval
只有在你的需求中包括“添加一个巨大的安全漏洞”(或者像 @thatotherguy 建议的那样仔细验证传递给它的值,尽管我无法立即评估该验证是否足够)时才是一个“解决方案”。 - Etan Reisner