두 개의 파일이 있고 one.txt
다른 two.txt
.
one.txt 파일 내용:
"21"
"22"
"23"
2.txt 파일 내용:
"Hi how are you"
"Hello who are you"
"May I help you"
이제 첫 번째 줄을 추출 one.txt
하고 시작 부분에 "_"(밑줄)을 추가하여 변수로 만든 다음 첫 번째 줄을 추출하여 two.txt
선언된 변수에 할당하고 싶습니다. 즉, 다음과 같아야 합니다.
_21="Hi how are you"
_22="Hello who are you"
_23="May i help you"
echo $_21 #This should print "Hi how are you"
변수는 위와 같이 선언되어야 합니다. bash 스크립트를 사용하여 이 작업을 수행할 수 있습니까?
답변1
@αГsнιι의 답변과 같은 붙여넣기를 사용하지만 처리하기가 조금 더 쉽습니다.
while IFS=$'\t' read num value; do
declare "_$num=$value"
done < <(paste {one,two}.txt)
그 다음에
$ echo "$_21"
Hi how are you
$ echo "$_22"
Hello who are you
$ echo "$_23"
May I help you
답변2
eval "$(paste -d"_=''" /dev/null <(tr -d \" <one) /dev/null two /dev/null)"
paste
-d="..."
목록에 정의된 구분 기호가 있는 파일/입력입니다.
/dev/null
첫 번째 파일 콘텐츠를 생성하고 _
두 번째 파일 two
콘텐츠를 작은따옴표로 묶어 각 파일 콘텐츠가 확장되지 않도록 더미 입력 으로 사용합니다 (변수가 포함된 경우 명령 대체).
1.txt:
"21"
"22"
"23"
2.txt:
"Hi $(date) how are you"
"Hello who are you"
"May I help you"
출력은 다음과 같습니다
_21='"Hi $(date) how are you"'
_22='"Hello who are you"'
_23='"May I help you"'
$ echo "${_21}"
"Hi $(date) how are you"
관련 변수에 할당되기 전에 확장하려면 명령을 다음과 같이 변경하십시오.
$ eval "$(paste -d"_=" /dev/null <(tr -d \" <one) two )"
$ echo "${_21}"
Hi Tue 24 Nov 2020 12:47:40 AM +0330 how are you