문제는 다음과 매우 유사합니다.Bash를 사용하여 파일에 여러 줄을 추가하는 방법--
하지만 파일을 시작 하고 가능하다면 파일에도 추가하고 싶습니다 .
printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
문제는 "--"로 시작하는 파일이 다음을 제공한다는 것입니다.
-bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]
탈출할 방법이 있나요 --
? 다른 옵션이 있나요? 여러 줄 작업을 수행하는 데 를 사용하는 방법을 잘 모르겠습니다 echo
. cat
좋은 옵션이 아닙니다. 자동화된 스크립트에 넣고 싶습니다.
답변1
--foo
옵션으로 받아들이는 대부분의 명령은 --
스스로를 "옵션 끝, 인수 시작" 표시로도 받아들입니다. 따라서 다음과 같이 할 수 있습니다.
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
그러나 정확한 예에 대한 더 구체적인 대답은 printf에 대한 첫 번째 인수가 형식 지정자이고 printf의 형식 지정 기능을 사용하지 않으면 상황이 필요 이상으로 어려워진다는 것입니다. 이것은 당신이 원하는 것을 수행하는 더 좋은 방법이 될 것입니다:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
이는 printf에게 각 인수를 가져와서 인쇄하고 그 뒤에 개행 문자가 오도록 지시합니다. 반복하는 것보다 쉬우며 \n
직면하는 주요 문제를 피할 수 있습니다. 그리고 --
문자열에 포함될 수 있는 기호를 이스케이프할 필요가 없습니다 .%
여러 줄 작업을 수행하는 방법은 다음을 echo
사용할 수 있습니다.
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
또는 더 휴대성이 뛰어납니다.
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
또는 여기 문서와 함께 cat을 사용하세요.
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF