참조된 경우 Sed는 파일을 찾을 수 없습니다.

참조된 경우 Sed는 파일을 찾을 수 없습니다.

sed 명령을 실행하는 쉘 스크립트가 있습니다. 변수가 확장되면 파일 이름을 참조합니다.

sed -i "$3d" $filename

~이 되다

sed -i 1d '~/file'

디버그 플래그에 표시된 대로입니다 -x.

실행하면 다음이 생성됩니다.

sed: can't read ~/file: No such file or directory

명령을 수동으로 실행하려고 하면 따옴표를 제거하지 않는 한 동일한 일이 발생합니다.

sed -i 1d ~/file

따옴표 없이 실행하면 원하는 출력이 생성됩니다.

답변1

문제는 파일 이름 주위의 따옴표입니다. 이는 쉘이 ~홈 폴더로 확장되는 것을 방지합니다. 그래서 sed이라는 폴더를 찾으세요 ~.

$filename따옴표를 포함하지 않거나 대신 실제 경로를 사용 하십시오 ~.

답변2

여기서 문제는 표시되지 않는 부분입니다. 해당 줄 앞 어딘가에 다음과 같은 내용이 있습니다.

filename="~/file"

따라서 문제는 나중에 사용하는 것이 $filename인용되는 것이 아니라 인용되지 않는다는 것입니다. 이름에 공백이 포함되어 있으면 다른 문제가 발생할 수 있습니다.

~단어의 첫 번째 문자인 경우 쉘은 이를 홈 디렉토리로 확장합니다. 변수 확장의 결과인 경우 확장되지 않습니다.

$HOME대신 사용할 수 있습니다 ~.

filename=$HOME/file
sed -i "$3d" $filename

아니면 따옴표를 사용하는 것이 더 좋습니다.

filename="$HOME/file"
sed -i "$3d" "$filename"

관련 정보