连接后变量会被覆盖

时间:2018-04-16 10:11:38

标签: bash shell unix string-concatenation

我写了这个小小的bash脚本:

#!/bin/bash -x
runDirectory="/mnt/sequences_tmp/melody_rnn/logdir/run_"
currName=$1
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=

正如您所看到的,不是将下一个变量/文本附加到最后使用的变量的前面,而是覆盖进度中的旧变量。

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

1 个答案:

答案 0 :(得分:2)

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

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