출력 파일을 만들기 위해/w 플래그와 함께 sed 명령을 사용하는 쉘 스크립트가 있습니다. 스크립트에서 해당 파일을 사용하려고하면 파일을 찾을 수 없지만 스크립트가 종료 된 후 해당 파일이 디렉토리에 생성됩니다.쉘 스크립트에서/w 매개 변수가있는 sed 명령
스크립트 내에서 생성 된 파일을 사용할 수 있습니까? 그 일을하려면 무엇을해야합니까?
#!/usr/bin/bash
fileQual=Test_load
dataFile=$fileQual.dat
corruptDataFile=$fileQual.err
cp "${dataFile}" "${dataFile}".cpy
LANG=C sed -n '/[\x00-\x08\x80-\xFF\x0B-\x0C\x0E-\x1F\x21-\x2B\x2F\x3A-\x40\x5B-\x60\x7B\x7D-\x7F]/w '${corruptDataFile}' ' "${dataFile}".cpy
echo "file corruptDataFile = ${corruptDataFile}"
ls ${corruptDataFile}
function checkNattach()
{
local fname="$1"
local atch
if [ -f "$1" ];then
atch="-a ${fname} "
echo "${fname} exists"
else
echo "${fname} not found"
fi
#resFun=atch
# echo " in function checkNattach atch $atch "
# echo " in function checkNattach resFun $resFun "
echo $atch
}
TIME=`date +%F-%H%M%S` # time stamp to the backup file
FILENAME="Test-$TIME.zip" # defining the format of the file name while backing up
echo $FILENAME
zipincl=""
zipincl="${zipincl} $(checkNattach ${corruptDataFile})"
echo "**********zipincl ${zipincl} ${corruptDataFile} "
zip -9 $FILENAME $corruptDataFile $dataFile
그리고 스크립트가 내가 디렉토리에 보면, 파일이 실제로 존재, 완료되면 출력은
file corruptDataFile = Test_load.err
ls: Test_load.err: No such file or directory
Test-2016-06-29-204904.zip
**********zipincl Test_load.err not found Test_load.err
+ zip -9 Test-2016-06-29-204904.zip Test_load.err Test_load.dat
zip warning: name not matched: Test_load.err
입니다. zip 명령에서 사용할 수있는 방법이 있습니까?
'\ x00- \ x08 \ x80..'을 사용하여 수행하고자하는 작업은 무엇입니까? – sjsam
기본적으로 해당 문자가 포함 된 파일의 줄을 제거하십시오. – adbdkb
많은 코드가 있습니다. [MCVE] (http://stackoverflow.com/help/mcve)에서 문제를 격리 할 수 있습니까? 또한 어떤 운영 체제를 실행하고 있습니까? '/ usr/bin/bash'는 이상한 장소처럼 보입니다. OS는'sed'와 같이 실행중인 다른 도구의 맛에 영향을 미칩니다. 아, 그리고 일반적으로 bash에서 항상 변수를 인용하십시오. 'dataFile = "$ fileQual.dat"'등 – ghoti