Scripting
未定義的變數
我正在嘗試使用此腳本:
#!/bin/csh foreach SUB (1 2 3 4 5 6 7 8 9 10 11 12 13 14) echo $SUB foreach VISIT (1 2 3 4 5 6 7 8) echo $VISIT grep 'StudyDate' -f /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VIS}/scout/001/infodump.dat done done
但每次我收到此錯誤消息時:
1 1 SUB: Undefined variable.
我不知道為什麼。
除了不應該編寫腳本的所有原因
csh
之外,您還在腳本中混合了 bash 語法和 csh 語法。你正在用 開始你的循環,
csh
foreach
並試圖用bash
done
. a 的循環出口csh
foreach
是end
,不是done
。此外,您有一個在 grep 語句VISIT
中呼叫的變數。$VIS
所以你的腳本在 csh 中的語法是正確的:
#!/bin/csh foreach SUB (1 2 3 4 5 6 7 8 9 10 11 12 13 14) echo $SUB foreach VISIT (1 2 3 4 5 6 7 8) echo $VISIT grep 'StudyDate' -f /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VISIT}/scout/001/infodump.dat end end
或在 bash 中:
#!/bin/bash for SUB in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do echo $SUB for VISIT in 1 2 3 4 5 6 7 8; do echo $VISIT grep 'StudyDate' -f /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VISIT}/scout/001/infodump.dat done done
編輯 2017/04/03
這是為文件添加測試的 bash 腳本版本:
#!/bin/bash idf_pfx="/home/colourlab/Desktop/DrummingDTI" idf_sfx="scout/001/infodump.dat" for SUB in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do echo $SUB for VISIT in 1 2 3 4 5 6 7 8; do echo $VISIT idfile="${idf_pfx}/D${SUB}/D${SUB}V${VISIT}/${idf_sfx}" if [ -f "${idfile}" ]; then grep 'StudyDate' $idfile else echo "No studydate file: $idfile" fi done done