중첩된 큰따옴표(') 사용을 피하는 방법

중첩된 큰따옴표(') 사용을 피하는 방법

저는 상대적으로 zsh를 처음 사용하는 사용자이고 (불행히도) 쉘에 대해 잘 모릅니다. 그럼에도 불구하고 해시 값을 포함하는 .bashrc에 별칭을 정의하고 싶습니다. 그러나 zsh는 그것을 좋아하지 않는 것 같습니다. 내 명령은 기본적으로 LaTeX 파일의 문자열을 sed로 바꾸고 LaTeX를 실행한 다음 교체를 취소합니다.

alias tex-build='
sed -i \
  's~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~\\newcommand{\\command}\[1\]{}~' \ 
  /path/to/mytexfile.tex && 
latex ... && 
sed -i \
  's~\\newcommand{\\command}\[1\]{}~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~' \
  /path/to/mytexfile.tex
'

LaTeX 명령의 해시와 함께 작동하도록 이 별칭을 얻는 방법을 찾는 데 도움을 줄 수 있는 사람이 있습니까? 미리 감사드립니다!

답변1

첫째, zsh읽혀지지 않습니다 .bashrc. 이는 리소스 제어 파일 bash이므로 에 zsh넣거나 ..zshrc.profile

둘째, 어떤 종류의 따옴표도 단순히 중첩할 수 없습니다. 'a long 'nested' string'이는 중첩된 따옴표가 있는 문자열이 아니며, 따옴표 붙은 문자열 a long, 맨 문자열, nested따옴표 붙은 문자열이 뒤따르는 것입니다 string.

당신이 하려는 일은 함수일 가능성이 더 높습니다. 또한 파일을 수정하고 수정된 양식에 대해 일회성 작업을 수행한 다음 다시 변경하므로 파일을 수정하지 않고 수정된 양식을 파이프라인으로 보내는 것이 더 간단합니다. 따라서 다음과 같습니다.

tex-build() {
  sed \
    's~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~\\newcommand{\\command}\[1\]{}~' \ 
    /path/to/mytexfile.tex | latex ...
}

관련 정보