如何不使用嵌套的强引号 (')

如何不使用嵌套的强引号 (')

我是 zsh 的一个相对较新的用户,对 shell 不太了解(不幸的是)。尽管如此,我想在我的 .bashrc 中定义一个包含哈希值的别名。然而,zsh似乎不喜欢它。我的命令基本上用于用 sed 替换 LaTeX 文件中的字符串,对其运行 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 ...
}

相关内容