我想做一個簡單的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