私はヘルメットカメラから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"