我想做一个简单的tcsh脚本来查找一个文件夹,然后导航到它,如果它存在。该语句正确评估,但如果评估为false,则会出现“then:then/endif not found”错误。如果它评估为真,没有问题。我哪里错了?tcsh如果/然后语句给出错误
#!/bin/tcsh
set icmanagedir = ""
set workspace = `find -maxdepth 1 -name "*$user*" | sort -r | head -n1`
if ($icmanagedir != "" && $workspace != "") then
setenv WORKSPACE_DIR `readlink -f $workspace`
echo "Navigating to workspace" $WORKSPACE_DIR
cd $WORKSPACE_DIR
endif
($ icmanagedir是elswehere初始化,但我得到的错误无论哪个变量是空的)
提供[mcve]会很好,所以人们可以重现问题。因此,我猜想在'$ icmanagedir'和'$ workspace'周围加引号可以解决你的问题:'if(“$ icmanagedir”!=“”&&“$ workspace”!=“”)then'。也可以尝试在'('和''''之前)之后添加一个空格;一些tcsh版本对此非常挑剔(以及你通常不想在tcsh中编写程序的原因之一)。 – Carpetsmoker
围绕变量和括号周围的空格添加引号并没有帮助。如果我将代码(更新)本身放在脚本中,我仍然会收到错误。 – Kayson
嗯,你的例子对我来说运行得很好(因为'icmanagedir'总是''“''',所以'if'永远不会输入)。你错过了'setenv WORKSPACE_DIR ..'中的结尾反向符号。复制/粘贴错误? – Carpetsmoker