저는 sed 스크립팅을 처음 접했습니다. 사용자에게 파일에 삽입할 값을 요청하는 스크립트를 만들고 싶습니다. 올바른 코드를 찾을 수 없습니다
그래서 텍스트 파일의 내 줄은 다음과 같습니다
path =
사용자의 경로를 입력하고 싶으므로 행은 다음과 같습니다.
path = /dev
시행착오를 거쳐 얻은 것은 다음과 같습니다.
read -p "Enter path name: " PT
echo "$( sed -i '/path/ s/.*/& $PT/' textfile )"
이것은 만든다
path = $PT
올바른 코드를 알려주시겠어요?
답변1
작은따옴표 내에서는 변수 확장이 발생하지 않습니다. 대신 큰따옴표를 사용하세요.
/
+ 변수가 경로의 일부로 포함되기 때문입니다 . GNU의 경우 sed
다른 대체 구분 기호를 사용해야 합니다.
read -p "Enter path name: " PT
sed -i "\#path# s#.*#& $PT#" infile
답변2
read -p "Enter path name: " PT
sed -i "/path/ s#.*#& $PT#" textfile
작은따옴표가 아닌 큰따옴표를 사용해야 합니다. 작은따옴표는 셸에서 문자열을 보호하지만 이 경우 셸에서 값을 확장하도록 하려고 합니다 $PT
.
반품,
echo "$( ... )"
...
(의 내용)과 동일합니다 $( ... )
.