1
我有我的make文件这个食谱:配方似乎忽略条件内环
.PHONY: matlab
matlab: $(matlab_files)
set -x;for f in `echo "$^"`; do\
base=`basename $$f`;\
if [[ ! -f "$(matlab_dir_name)/$${base}" ]]; then\
ln -s $$f $(matlab_dir_name)/$${base}; \
fi;\
done;set +x
就是,我要检查,如果链接使得它之前就存在。但是,如果测试似乎被忽略。通过上面显示的调试选项,我得到以下几行:
+ for f in '`echo "MatlabD3PDImport/matlab/d3pd_export.m MatlabD3PDImport/matlab/matd3pd.m MatlabD3PDImport/matlab/net2py.m MatlabRingerTrain/matlab/cluster_size.m MatlabRingerTrain/matlab/create_cluster.m MatlabRingerTrain/matlab/getEffAtThres.m MatlabRingerTrain/matlab/getThresAndEff.m MatlabRingerTrain/matlab/scanparam.m MatlabRingerTrain/matlab/script_normal_train_offline.m MatlabRingerTrain/matlab/trainBinaryClassifier.m MatlabRingerTrain/matlab/trainRinger.m MatlabRingerTrain/matlab/xValidateBinaryClassifier.m"`'
++ basename MatlabRingerTrain/matlab/scanparam.m
+ base=scanparam.m
+ [[ ! -f matlab/scanparam.m ]]
+ ln -s MatlabRingerTrain/matlab/scanparam.m matlab/scanparam.m
ln: matlab/scanparam.m: File exists
+ for f in '`echo "MatlabD3PDImport/matlab/d3pd_export.m MatlabD3PDImport/matlab/matd3pd.m MatlabD3PDImport/matlab/net2py.m MatlabRingerTrain/matlab/cluster_size.m MatlabRingerTrain/matlab/create_cluster.m MatlabRingerTrain/matlab/getEffAtThres.m MatlabRingerTrain/matlab/getThresAndEff.m MatlabRingerTrain/matlab/scanparam.m MatlabRingerTrain/matlab/script_normal_train_offline.m MatlabRingerTrain/matlab/trainBinaryClassifier.m MatlabRingerTrain/matlab/trainRinger.m MatlabRingerTrain/matlab/xValidateBinaryClassifier.m"`'
++ basename MatlabRingerTrain/matlab/script_normal_train_offline.m
+ base=script_normal_train_offline.m
+ [[ ! -f matlab/script_normal_train_offline.m ]]
+ ln -s MatlabRingerTrain/matlab/script_normal_train_offline.m matlab/script_normal_train_offline.m
ln: matlab/script_normal_train_offline.m: File exists
+ for f in '`echo "MatlabD3PDImport/matlab/d3pd_export.m MatlabD3PDImport/matlab/matd3pd.m MatlabD3PDImport/matlab/net2py.m MatlabRingerTrain/matlab/cluster_size.m MatlabRingerTrain/matlab/create_cluster.m MatlabRingerTrain/matlab/getEffAtThres.m MatlabRingerTrain/matlab/getThresAndEff.m MatlabRingerTrain/matlab/scanparam.m MatlabRingerTrain/matlab/script_normal_train_offline.m MatlabRingerTrain/matlab/trainBinaryClassifier.m MatlabRingerTrain/matlab/trainRinger.m MatlabRingerTrain/matlab/xValidateBinaryClassifier.m"`'
++ basename MatlabRingerTrain/matlab/trainBinaryClassifier.m
+ base=trainBinaryClassifier.m
+ [[ ! -f matlab/trainBinaryClassifier.m ]]
+ ln -s MatlabRingerTrain/matlab/trainBinaryClassifier.m matlab/trainBinaryClassifier.m
ln: matlab/trainBinaryClassifier.m: File exists
+ for f in '`echo "MatlabD3PDImport/matlab/d3pd_export.m MatlabD3PDImport/matlab/matd3pd.m MatlabD3PDImport/matlab/net2py.m MatlabRingerTrain/matlab/cluster_size.m MatlabRingerTrain/matlab/create_cluster.m MatlabRingerTrain/matlab/getEffAtThres.m MatlabRingerTrain/matlab/getThresAndEff.m MatlabRingerTrain/matlab/scanparam.m MatlabRingerTrain/matlab/script_normal_train_offline.m MatlabRingerTrain/matlab/trainBinaryClassifier.m MatlabRingerTrain/matlab/trainRinger.m MatlabRingerTrain/matlab/xValidateBinaryClassifier.m"`'
++ basename MatlabRingerTrain/matlab/trainRinger.m
+ base=trainRinger.m
+ [[ ! -f matlab/trainRinger.m ]]
+ ln -s MatlabRingerTrain/matlab/trainRinger.m matlab/trainRinger.m
ln: matlab/trainRinger.m: File exists
+ for f in '`echo "MatlabD3PDImport/matlab/d3pd_export.m MatlabD3PDImport/matlab/matd3pd.m MatlabD3PDImport/matlab/net2py.m MatlabRingerTrain/matlab/cluster_size.m MatlabRingerTrain/matlab/create_cluster.m MatlabRingerTrain/matlab/getEffAtThres.m MatlabRingerTrain/matlab/getThresAndEff.m MatlabRingerTrain/matlab/scanparam.m MatlabRingerTrain/matlab/script_normal_train_offline.m MatlabRingerTrain/matlab/trainBinaryClassifier.m MatlabRingerTrain/matlab/trainRinger.m MatlabRingerTrain/matlab/xValidateBinaryClassifier.m"`'
++ basename MatlabRingerTrain/matlab/xValidateBinaryClassifier.m
+ base=xValidateBinaryClassifier.m
+ [[ ! -f matlab/xValidateBinaryClassifier.m ]]
+ ln -s MatlabRingerTrain/matlab/xValidateBinaryClassifier.m matlab/xValidateBinaryClassifier.m
ln: matlab/xValidateBinaryClassifier.m: File exists
+ set +x
为什么shell忽略if测试?
谢谢,我只是发现错误与符号链接,因为matlab有运行符号链接的麻烦。我将它改为硬链接,'-f'测试和matlab都能识别这个文件。幸运的是,您的答案只是提供了所有缺乏关闭该线程的信息。 – Werner 2014-09-28 03:21:12