기본적으로 한 지점에서 좌표를 저장해야 하는 프로그램을 만들려고 합니다. 프로그램의 일부에서는 두 문자열에 대해 개별적으로 수학 연산을 수행한 다음 두 문자열을 다시 결합할 수 있도록 문자열을 두 개의 문자열로 분할해야 합니다. 의사코드에서 문자열을 변경하는 방법에 대한 예가 필요합니다.
Var1="10 17"
separate Var1 into Var2 and Var3
#using the command echo "$Var1,Var2,Var3" here would output 10 17,10,17
#preform math on Var2 and/or Var3 here
Var1="$Var2 $Var3"
문제의 일부는 내가 이것을 할 수 없다는 것이다
Var2=${Var1::-2}
또는 첫 번째 또는 마지막 두 자리에 해당하는 숫자를 제거하려면 첫 번째 문자를 제거하세요. 이러한 숫자는 때때로 99보다 크거나 10보다 작을 수 있기 때문입니다. 두 숫자 사이의 구분 기호를 공백으로 설정하고 싶습니다. 내가 어떻게 할 수 있는지 아는 사람 있나요?
답변1
구분 기호가 단일 공백인 경우접두사 및 접미사 제거.
before_the_first_space="${Var1%% *}"
after_the_first_space="${Var1# *}"
before_the_last_space="${Var1%* }"
after_the_last_space="${Var1##* }"
또는 다음을 사용하세요.분사따옴표 없는 변수 대체에 관해. 이는 공백의 각 시퀀스를 구분 기호로 처리하고 결과를 배열에 넣습니다.set -f
장애를 입히다와일드카드 확장, set +f
다시 켜세요.
set -f
parts=($Var1)
set +f
echo "${parts[0]}"
또는 다음을 사용하십시오.read
내장변수를 배열로 분할합니다. read
표준 입력에서 읽으므로 사용하십시오.여기에 있는 문자열변수의 내용을 입력으로 전달합니다.
read -r -a parts <<<"$Var1"
인용 없는 대체 방법 및 read
값 기반 분할 방법IFS
.