Bashスクリプト消失変数

Bashスクリプト消失変数

私はヘルメットカメラからmymybuntuマシンにビデオファイルを移動する小さなスクリプトを作成しましたが、何らかの理由でスクリプトに渡されない変数があります。問題の変数は

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"

おすすめ記事