【问题标题】:Variables get overwritten when concatenated连接时变量会被覆盖
【发布时间】:2018-04-16 10:11:37
【问题描述】:

我写了这个小 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=

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

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

【问题讨论】:

标签: bash shell unix string-concatenation


【解决方案1】:

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

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

【讨论】:

  • 啊,是的,谢谢。我前段时间已经这样做了,但我想我在创建新文件时再次错误地添加了 \r
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2019-04-20
  • 2014-11-07
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多