我正在尝试执行一个简单的for循环,但它一直告诉我附近有一个语法错误。我试图在网上找到一些答案,但似乎没有什么能回答我的问题。
for循环就是如此。它想要做的就是找到两个文件夹之间的差异:
#!/bin/bash
for word in $LIST; do
diff DIR1/config $word/config
done
exit
语法错误就在附近。它说"语法错误接近意外令牌'做'"。 $ LIST由调用它的程序设置在此脚本之外。
有谁知道这里会发生什么?
答案 0 :(得分:3)
这对于bash
来说肯定是有效的语法,所以我会检查文件中某处是否有特殊字符,例如行尾的CR / LF。
假设你在UNIXy系统上,od -xcb scriptname.sh
应该告诉你。
此外,您可能还想使用$word
而不只是word
,因为您需要评估变量。
要检查的另一件事是 实际上是在bash
而不是某些“较小”的shell下运行它。并且在脚本中放置set -x
以进行调试通常很方便,因为它在执行之前输出行(使用set +x
关闭此功能)。
要检查的最后一件事是LIST
实际设置为某种内容,方法是在echo "[$LIST]"
循环之前执行for
。