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腳本換行的原理的話還是回花一些時間才能解決,筆者在此記錄一下,希望能幫到后來人。