![使用换行符从 shell 脚本运行 python 脚本](https://linux22.com/image/1161399/%E4%BD%BF%E7%94%A8%E6%8D%A2%E8%A1%8C%E7%AC%A6%E4%BB%8E%20shell%20%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%20python%20%E8%84%9A%E6%9C%AC.png)
我有一个想从 shell 脚本运行的 Python 代码。这个有效
python train.py --dataset './datasets/lausanne' --timestep 30 --obs_len 8 --loader_num_workers 1 --num_epochs 100 --batch_size 16 --embedding_dim 64 --h_dim 32 --num_layers 1 --mlp_dim 64 --dropout 0 --batch_norm 0 --learning_rate 0.0001 --output_dir './models' --print_every 100 --checkpoint_every 100 --checkpoint_name 'cnnlstm' --checkpoint_start_from None --restore_from_checkpoint 1 --use_gpu 1 --gpu_num '0'
但是这个没有。我只是想将命令拆分成多行。
python train.py \
# Dataset options
--dataset './datasets/lausanne' --timestep 30 --obs_len 8 --loader_num_workers 1 \
# Optimization
--num_epochs 100 --batch_size 16 \
# Model options
--embedding_dim 64 --h_dim 32 --num_layers 1 --mlp_dim 64 --dropout 0 --batch_norm 0 --learning_rate 0.0001 \
# Output
--output_dir './models' --print_every 100 --checkpoint_every 100 --checkpoint_name 'cnnlstm' --checkpoint_start_from None --restore_from_checkpoint 1 \
# Misc
--use_gpu 1 --gpu_num '0'
答案1
注释行不会被完全忽略;它们基本上被视为空行。
将脚本参数放在数组中效果会更好。
args=(
# Dataset options
--dataset './datasets/lausanne' --timestep 30 --obs_len 8 --loader_num_workers 1
# Optimization
--num_epochs 100 --batch_size 16
# Model options
--embedding_dim 64 --h_dim 32 --num_layers 1 --mlp_dim 64 --dropout 0 --batch_norm 0 --learning_rate 0.0001
# Output
--output_dir './models' --print_every 100 --checkpoint_every 100 --checkpoint_name 'cnnlstm' --checkpoint_start_from None --restore_from_checkpoint 1
# Misc
--use_gpu 1 --gpu_num '0'
)
python train.py "${args[@]}"