连接时变量会被覆盖

Variables get overwritten when concatenated

我写了这个 bash 脚本:

#!/bin/bash -x
runDirectory="/mnt/sequences_tmp/melody_rnn/logdir/run_"
currName=
magenta1="bazel run //magenta/models/melody_rnn:melody_rnn_train -- --config=attention_rnn --run_dir="
echo $magenta1
magenta2="$magenta1$runDirectory"
echo $magenta2
magenta3="$magenta2$currName"
echo $magenta3

因此,如果我使用参数 "music" 启动脚本,输出应如下所示:

bazel run //magenta/models/melody_rnn:melody_rnn_train -- --config=attention_rnn --run_dir=

bazel run //magenta/models/melody_rnn:melody_rnn_train -- --config=attention_rnn --run_dir=/mnt/sequences_tmp/melody_rnn/logdir/run_

bazel run //magenta/models/melody_rnn:melody_rnn_train -- --config=attention_rnn --run_dir=/mnt/sequences_tmp/melody_rnn/logdir/run_music

但我真正得到的输出是:

bazel run //magenta/models/melody_rnn:melody_rnn_train -- --config=attention_rnn --run_dir=

/mnt/sequences_tmp/melody_rnn/logdir/run_ody_rnn_train -- --config=attention_rnn --run_dir=

musicsequences_tmp/melody_rnn/logdir/run_ody_rnn_train -- --config=attention_rnn --run_dir=

如您所见,它没有附加下一个 variable/text,而是被添加到最后使用的变量的前面,覆盖了正在进行的旧变量。

有谁知道我的错误可能是什么?我还没有在这里找到任何类似的问题(遗憾)

听起来您的变量在某处包含 \r(回车符 return,0x0D)。您可以将输出通过管道传输到 xxd(或任何其他十六进制转储工具)以确认。

您的脚本是以 DOS 格式保存的吗?