![여러 변수를 일반 텍스트 데이터베이스 형식으로 저장](https://linux55.com/image/100409/%EC%97%AC%EB%9F%AC%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%9D%BC%EB%B0%98%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%20%ED%98%95%EC%8B%9D%EC%9C%BC%EB%A1%9C%20%EC%A0%80%EC%9E%A5.png)
각 루프 반복에서 bash 스크립트의 변수에 일부 명령 출력을 저장하고 있습니다(예: 3). 반복이 완료될 때까지 이 변수를 3개의 필드가 있는 일반 텍스트 데이터베이스에 저장하고 싶습니다.
아이디어는 다음과 같습니다.
If..
Command output1 > $v1
Command output2 > $v2
Command output3 > $v3
echo $v1 $v2 $v 3 >> database.txt
fi
변수 값을 Database.txt에 저장하는 데 echo 변수 호출이 유효한가요? 일반 텍스트에서 탭으로 구분되도록 하려면 어떻게 해야 할까요?
답변1
내가 구축한 유사한 프로젝트에서 이것은 나에게 잘 작동했습니다.
export TMPFILE=/tmp/yadvalues
function listselect {
echo "Args Received = $0, $1 , $2 , $3 , $4 , $5" #Display args send to function
echo -e "FILEID=\"$1\"\nFILENAME=\"$4\"\nFILECOMMAND=\"$5\"" > $TMPFILE
# Save some of the args in file
}
#export -f listselect
function filedisplay {
source $TMPFILE
ftd=$(yad --title="File Display-$FILENAME" --width=800 --height=500 \
--center --text-info --filename=$FILENAME --wrap --editable \
--button="Go Back":0)
# Use var $FILENAME present in $TMPFILE
}
#export -f filedisplay
답변2
게시한 코드는 명령의 표준 출력을 다음을 기반으로 하는 파일 이름으로 캡처합니다.가치& 및 기타 변수 $v1
. 그게 당신이 하고 있는 일이라면, 아니요, 마지막 echo 문은 생성되지 않습니다.콘텐츠이 3개 파일이 있는데 이 3개 파일은이름.
이 세 가지 명령의 출력을 탭으로 구분된 파일에 저장하려면 database.txt
다음을 수행하십시오.
printf "%s\t%s\t%s\n" "$(Command output1)" "$(Command output2)" "$(Command output3)" >> database.txt