【发布时间】:2013-08-08 18:35:23
【问题描述】:
第四行的错误在哪里?
if [ $bn == README ]; then
如果我把它写成,我仍然会得到它
if [ $bn == README ]
then
或
if [ "$bn" == "README" ]; then
上下文:
for fi in /etc/uwsgi/apps-available/*
do
bn=`basename $fi .ini`
if [ $bn == "README" ]
then
echo "~ ***#*** ~"
else
echo "## Shortend for convience ##"
fi
done
【问题讨论】:
-
我尝试在原始脚本中进行更改,但仍然出现错误。我做了很多测试。如果我设置 rme=README 然后在简单测试中在一个或两个站点上使用引号然后执行例如 [ $rme==README ] && echo "equal";输出相等。空格在哪里确实很重要 - 当然有 [ 但如果你在 == 的一侧放置空格,它们必须在另一侧。 (我知道 bash。)我编辑了分号,以防万一我有一个杂散,并且没有修复或更改错误行。
-
请更新您的问题,代码给出了新的错误。我在测试目录中触摸了一个 README 文件,您的代码与我之前对
if [ $bn == "README" ]的建议一致。 -
@fedorqui 没有更多的引号,不。如果您想符合 POSIX,请使用
=而不是==。 -
您在其他地方也需要更多报价。例如:
bn=$(basename "$fi");$fi周围的引号(与所有扩展一样)是强制性的。 -
修复错误后仍然无法正常工作并不意味着不需要修复错误。无论如何 - 使用
set -x找出出错的第一个位置。
标签: bash