【问题标题】:Variables from config file in bash:Syntax error :operand expected (error token is "<")bash 中配置文件中的变量:语法错误:预期操作数(错误标记为“<”)
【发布时间】:2012-06-14 05:21:04
【问题描述】:

所以我有这个配置文件,其中设置了值,例如

config.sh

nFiles=2

myScript.sh

for ((i=0;i<$nFiles;i++));
do
     mv -v $FILE_GEN_SOURCE/${FILES[i]} $FILE_DEST;
done  

但这给了我这个

error: ((: i<: syntax error: operand expected (error token is "<")

我尝试删除 $,然后 nFiles 的默认值变为 0。那么关于这里有什么问题以及可以做些什么来纠正这个问题的任何想法?

【问题讨论】:

  • 我试过 nFiles=10;for ((i=0;i &lt; $nFiles;i++));do echo "$nFiles";done 并为我工作
  • 这是“config.sh”还是调用“config.sh”?我认为您可能有一个文件循环相互调用和采购。
  • @DennisWilliamson config.sh 只是将值 nFiles=2 分配给它。 myScript.sh 获取 config.sh 和 for 循环。但由于某种原因,nFiles 值没有被存储或未被识别
  • 所以在您的问题中,带有文件名的行不是任何脚本的一部分 - 它们是用于描述两个单独脚本的问题的一部分?如果是这种情况,那么 myScript.sh 永远不会获取 config.sh 并且这是你的问题。见kev的回答。

标签: bash ubuntu for-loop configuration-files


【解决方案1】:

你需要source config.shmyScript.sh的开头。

myScript.sh 无法从config.sh 访问nFiles

试试:

#!/bin/bash
# myScript.sh

source config.sh

for ((i=0;i<$nFiles;i++));
do
     mv -v $FILE_GEN_SOURCE/${FILES[i]} $FILE_DEST;
done 

【讨论】:

  • 您是否将source config.sh 放入您的myScript.sh 中?
  • @user1357576:不,你没有。不是基于您在问题中显示的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多