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"

관련 정보