아래에서 sed 명령을 사용하고 있는데 if가 build 및 delete MacAddressPasswordeRegisteryValue
입니다 . 이를 피할 수 있는 방법이 있습니까?WElcome12#
WElcome12
#
sed -i "s#^mac.address.sftp.user.password=.*#mac.address.sftp.user.password=${MacAddressPasswordeRegisteryValue#*=}#" $APP_CONFIG_FILE
답변1
비밀번호에 문자가 포함될 수 있다고 가정하면 표현식에 사용된 구분 기호는 sed
사용하기에 안전하지 않습니다. 예를 들어, s/.../.../
비밀번호에 가 포함 되어 있으면 /
동일한 문제가 다시 발생합니다.
그러므로 sed
여기서는 사용하지 마세요. 대신에,
awk -v pw="$MacAddressPasswordeRegisteryValue" \
'BEGIN { OFS=FS="=" }
$1 == "mac.address.sftp.user.password" { print $1, pw; next } 1' \
"$APP_CONFIG_FILE" >"$APP_CONFIG_FILE"-new
이것은 바뀔 것이다
mac.address.sftp.user.password=something old
입력하다
mac.address.sftp.user.password=hello world !#$/
그것이 $MacAddressPasswordeRegisteryValue
문자열이라면요 hello world !#$/
. 다른 줄은 수정 없이 새 파일로 전달됩니다 "$APP_CONFIG_FILE"-new
.