bash脚本消失变量

bash脚本消失变量

我创建了一个小脚本,用于将视频文件从头盔式摄像机移动到我的 mythbuntu 机器,并且有一个变量由于某种原因不会传递到脚本中。有问题的变量是

d=`echo $file | awk '{ print $6 }'`

捕获正常,但是在声明中

scp -l 5000 $name $SavePath$d_$hour.AVI

只是不会插入值。

#!/bin/bash
# This script does copy files from /media/disk/DCIM/100DSCIM to 
# 192.20.0.200:/media/Elements/mythtv/videos/BikeRiding and renames the files using the time stamp
set -x
[email protected]:/media/Elements/mythtv/videos/BikeRiding/
SourcePath=/media/disk/DCIM/100DSCIM/
ls $SourcePath*.AVI --full-time > file_list
cat file_list | while read file
do
    d=`echo $file | awk '{ print $6 }'`
    hour=`echo $file | awk '{ print $7 }'`
    name=`echo $file | awk '{ print $9 }'`
    scp -l 5000 $name $SavePath$d_$hour.AVI
done

答案1

这是因为 bash 将变量名解释为d_.在这种情况下,请使用花括号来包围变量名称:

scp -l 5000 $name $SavePath${d}_$hour.AVI

甚至

scp -l 5000 ${name} ${SavePath}${d}_${hour}.AVI

最好用双引号变量来防止名称中带有空格等奇怪符号的错误:

scp -l 5000 "${name}" "${SavePath}${d}_${hour}.AVI"

相关内容