shell:奇怪的字符串连接行为

时间:2016-12-19 09:11:08

标签: bash shell string-concatenation

我写了这样一个scipt:

#!/bin/bash
while read line
do
  echo line ${line}
  pdbfile=${line}.pdb  
  echo pdbfile ${pdbfile}
done < myfile

结果是:

line pdb8mhtA
.pdbfile pdb8mhtA

虽然它应该是

line pdb8mhtA
pdbfile pdb8mhtA.pdb

这有什么问题?为什么字符串连接不起作用?为什么线条开头的奇怪点? 我替换为pdbfile=${line}'.pdb'。这不会改变结果。

2 个答案:

答案 0 :(得分:0)

&#34;字符串到达​​行的开头&#34;表示您$line中有回车的症状,您可以通过tr管道将许多其他方式删除到您的文件中:

while read line
do
  echo line ${line}
  pdbfile=${line}.pdb  
  echo pdbfile ${pdbfile}
done < <(cat file | tr -d '\r')

答案 1 :(得分:-1)

我已经尝试过你的脚本,它对我来说很好用:

public function handle($request, Closure $next)
{
    if ( ! $request->is('api/*'))
    {
        return parent::handle($request, $next);
    }

    return $next($request);
}

顺便说一句,你可以尝试&#34;保存&#34; &#34;。&#34;

./testConcat
line pdb8mhtA
pdbfile pdb8mhtA.pdb

你可以看到结果是相同的

while read line
do
  echo line ${line}
  pdbfile=${line}\.pdb
  echo pdbfile ${pdbfile}
done < myfile