일부 필드가 포함된 파일이 있습니다. 예를 들어,
var One = "fcb";
var Two = "abc";
내가 어떻게 할 수있는업데이트/교체이 줄은 스크립트를 사용하고 있습니까?
나는 다음과 같은 일을 할 수 있기를 원합니다 :
echo -n "Enter One: "
read One
echo -n "Enter Two: "
read Two
sed -i $One ./file.js
sed -i $Two ./file.js
그러나 스크립트를 실행하면 다음과 같습니다.
Enter One: fge3
Enter Two: ghj5
보여주다:
sed: -e expression #1, char 1: unknown command: `f'
sed: -e expression #1, char 2: extra characters after command
답변1
sed 명령은 다음과 같습니다
sed -i -e 's/var One =.*/var One = "'$One'";/' -e 's/var Two =.*/var Two = "'$Two'";/' file.js
다음을 추가하도록 편집되었습니다.
함정을 조심하세요...사용자가 foo/bar
답변과 같은 불쾌한 문자를 입력하는 경우 :-)
두 번째 편집:
당신이 원하지 않는다면허용하다잘못된 문자가 있으면 중단할 수 있습니다. 예를 들어 다음을 read One
추가할 수 있습니다.
if [[ "$One" =~ "/" ]]; then echo bad char / not allowed; exit; fi
sed
명령문에 대해 다른 문자(예: a |
대신 /
)를 선택하고 이를 비활성화 할 수 있습니다 .
그렇지 않으면 영리한 인용을 시도해야 합니다...
One=$(echo "$One" | sed 's/\//\\\//g')