shell error: unrecognized arguments: \
在使用linux长命令时,我们通常会用一个shell脚本加\
分行的形式来更清晰展示参数。
这时有一个注意事项:在\
后必须紧跟回车, 否则会导致后面的参数无法传入。因为这时程序会将后面的参数算作一条新命令。
本文要说的不是这个问题,而是另一个笔者在使用多换行的shell脚本过程中遇到的另一个问题。
笔者当时运行的脚本(简化了大部分参数)如下:
python mb_ae_act.py \
--ch_p 2 \
--batchSize0 1 \
--batchSize 64 \
报错为:
usage: mb_ae_act.py [-h] [--gpu_id GPU_ID] [--num_workers NUM_WORKERS] [--weight_decay WEIGHT_DECAY] [--p P] [--tbx TBX] [--batchSize BATCHSIZE] [--batchSize0 BATCHSIZE0] [--epochs EPOCHS] [--lr LR] [--opt OPT][--ch_p CH_P] [--load] [--pth_tbx PTH_TBX] [--load_epoch LOAD_EPOCH] [--act] [--rect] [--split] [--multiply] [--add] [--deeperRC] [--fix224] [--resample] [--HDD]
mb_ae_act.py: error: unrecognized arguments: \
经过多次尝试,发现是程序将最后一个\
也当做了参数,正确写法应该不能有最后一个\
或者在其之后加一个回车,即解决方案有以下两种:
-
python mb_ae_act.py \ --ch_p 2 \ --batchSize0 1 \ --batchSize 64
-
python mb_ae_act.py \ --ch_p 2 \ --batchSize0 1 \ --batchSize 64 \
虽然是个小问题,但是不了解其中shell脚本换行的原理的话还是回花一些时间才能解决,笔者在此记录一下,希望能帮到后来人。