目录和字符串我bash脚本

时间:2012-04-15 08:52:21

标签: linux bash

我是bash脚本的新手,需要一些奇怪问题的帮助。

以下是我的代码行:

#!/bin/ash -x  
echo  Variabel \$1='\t'$1  
TARGET_DIR=/volume1/video/Transcoded/  
echo "Variabel\$TARGET_DIR=$TARGET_DIR"  
fbname=$(basename "$1")  
echo  Variabel \$fbname=$fbname  
out="${fbname}""${TARGET_DIR}"  
echo  $out  
read -p "Press [Enter] key to start next Transcode..."  

输出:

Variabel $1=\t/volume1/video/Movies/Thor (2011)/Thor (2011).mkv  
Variabel$TARGET_DIR=/volume1/video/Transcoded/  
Variabel $fbname=Thor (2011).mkv  
/volume1/video/Transcoded/  
Press [Enter] key to start next Transcode... 

在最后一个echo $ out shoul中将路径和文件名组合在一起..但它已被破坏。 什么可能是错的?

感谢任何anwer:)

2 个答案:

答案 0 :(得分:1)

试试这个:

out="${fbname}${TARGET_DIR}"  
echo  $out  

答案 1 :(得分:1)

在我看来,$ 1或者脚本的某些行以回车符结束(有时写成\ r) - 这个字符通常是不可见的,但会导致奇怪的行为和输出。例如,如果我们从TARGET_DIR =“/ volume1 / video / Transcoded /”和fbname = $'Thor(2011).mkv \ r'开始(注意:$'...'是带有转义序列的字符串的bash表示法喜欢\ r \ n解释),那么你最终会输出= $'Thor(2011).mkv \ r / volume1 / video / Transcoded /',当你echo $out时,它会打印出来:

Thor (2011).mkv
/volume1/video/Transcoded/

...第二个“线”打印在第一个上面,所以你永远不会看到第一个部分。

杂散回车通常是使用DOS / Windows文本编辑器的结果 - 不要将它们用于unix文本文件(包括脚本)。要删除它们,请参阅先前的问题herehere

顺便说一句,我第二次@ shellter对文件名在路径之前的原因感到困惑......