wpa_passphrase
에서 생성 된 내용이 wpa_psk
에 저장되어있는 경우 psk
콘텐츠를 bash 만 사용하거나 sed
또는 이와 비슷한 것을 사용해야합니까? 외부 명령없이bash를 사용하여이 매개 변수의 내용을 가져올 수 있습니까?
network={
ssid="ssid"
psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
}
wpa_passphrase
에서 생성 된 내용이 wpa_psk
에 저장되어있는 경우 psk
콘텐츠를 bash 만 사용하거나 sed
또는 이와 비슷한 것을 사용해야합니까? 외부 명령없이bash를 사용하여이 매개 변수의 내용을 가져올 수 있습니까?
network={
ssid="ssid"
psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
}
이 같은 시도 할 수 있습니다 : 및 psk=
를 포함하기 전에
part=${wpa_passphrase/*psk=/}
psk=${part/??\}/}
먼저 하나가 모든 것을 제거하고 두 번째는 }
과 이전의 공간과 줄 바꿈을 제거합니다. sed
와
, 요청과 같이 표준 입력에서 라인을 읽어
IFS=$'\n= '
while read -r lhs rhs; do
if [[ "$lhs" == "psk" ]]; then
printf "%s\n" "$rhs"
break
fi
done
이 루프와 =
에 그들을 분할합니다. lhs
변수는 =
의 왼쪽에 있고 rhs
은 오른쪽에 있습니다.
$lhs
이 psk
인 경우 $rhs
을 표준 출력에 인쇄하고 루프에서 벗어납니다.
:
sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt
예 : ...`sed` 배쉬는
$ cat file.txt
network={
ssid="ssid"
psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
}
$ sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt
13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
음인가? – Andrew
@Andrew'sed'는 외부 명령입니다. – Kusalananda
@Kusalananda 알아요.하지만 bash 스크립트와 터미널에서 사용할 수있는 무언가가 왜 bash가 아니라고 생각합니까? – Andrew