在Linux/Unix中执行shell脚本时出错

在Linux/Unix中执行shell脚本时出错,linux,shell,unix,Linux,Shell,Unix,我目前还不熟悉shell脚本,遇到了一个需要你们帮助的问题 我正在linux命令promt上运行一个shell脚本processmainjk.ksh。 此脚本使用此条目在内部调用另一个脚本 $PROC_BIN_DIR/admin/processsub.ksh -c $PROC_CONFIG_DIR/daily/processsub.cfg -m tkp processsub.cfg有名称值项,如“prc_log_dir${PROCESS_log_dir}”,这些项由脚本processsub.k

我目前还不熟悉shell脚本,遇到了一个需要你们帮助的问题

我正在linux命令promt上运行一个shell脚本processmainjk.ksh。 此脚本使用此条目在内部调用另一个脚本

$PROC_BIN_DIR/admin/processsub.ksh -c $PROC_CONFIG_DIR/daily/processsub.cfg -m tkp
processsub.cfg有名称值项,如“prc_log_dir${PROCESS_log_dir}”,这些项由脚本processsub.ksh内部读取,代码如下

while read name value
do
   value=`eval "echo $value"`
   case "$name" in
     prc_log_dir) LOGDIR=$value;;
     prc_arch_dir) ARCHIVE_DIR=$value;;
 esac
done < $config_file


if [ ! -d ${LOGDIR} ]; then
  echo "ERROR:($PNAME)(Invalid or missing $LOGDIR)"
  exit 1
fi
如果在错误“52”中看到行号,它将指向while循环中的value=
eval“echo$value”
。不确定此错误,但文件系统中存在目录/testmac/bin/admin。使用前面的更改运行相同的脚本会产生相同的错误

谁能帮我解决这个问题,让我知道如何解决它。长期以来一直被这个错误困扰着

更新:

谢谢你们的帮助。实际问题是,当我在windows中编辑配置文件并使用FileZilla将其传输到linux box时,配置文件被弄乱了。现在,linux上的所有操作都会自动提示,并且一切正常吗


谢谢

$value
包含诸如“表示foo”之类的内容。这意味着
“echo$value”
扩展为
“echo;意思是foo”
。当您计算这个值时,首先运行无参数的
echo
,然后运行
表示foo
。但是
意思是
不是有效的命令,因此脚本会崩溃。

应该怎么做
value=`eval“echo$value”`
是在Windows计算机上编辑文件还是将文件转换为DOS行尾?(请参阅bash tag wiki上的第一项。)@Etan Reisner是的,我刚刚在windows机器中编辑了配置文件,更改了它在Linux机器上的权限,因为它不允许我这样做。在更改权限之前,我已使用FileZilla将文件传输到Linux计算机@Biffen value=
eval“echo$value”
应计算到目录路径,但在我回显其值时,不知何故其为null或空白使用
dos2unix file
删除在Windows中处理时引入的额外Ctrl-M行结束字符。这会弄乱脚本和数据。祝你好运。非常感谢你的帮助。实际问题是,当我在windows中编辑配置文件并使用FileZilla将其传输到linux box时,配置文件被弄乱了。现在,linux上的所有操作都会自动提示,并且一切正常吗
 /testmac/bin/admin/processsub.ksh[52]: eval[1]: meaning: not found [No such file or directory]
)RROR:(/testmac/bin/admin/processsub.ksh)(Invalid or missing /testmac/bin/admin