Usando el terminal interactivo de bash, la salida de la quote a es 'a' como se esperaba. Pero la cita no funciona usando bash -c 'quote a' o en un script de shell, dando el error bash: line 1: quote: command not found . quote no es un ejecutable, y no pude encontrar la cita en la referencia incorporada de bash, entonces, ¿de dónde viene este comando?
bashrc:
# # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return stty -ixon #source $HOME/.config/xdgrc #source $HOME/.config/aliasrc PS1='\[\033[38;2;50;255;50m\]\u\[\033[0m\]@\[\033[38;2;255;70;70m\]\h\[\033[0m\]:\w\[\033[38;2;50;255;50m\]\$\[\033[0m\]> 'quote es una función auxiliar en /usr/share/bash-completion/bash_completion :
# This function shell-quotes the argument quote() { local quoted=${1//\'/\'\\\'\'} printf "'%s'" "$quoted" }No lo usaría ya que solo está disponible en shells interactivos cuando la finalización está habilitada.
Si desea escapar de los caracteres especiales en un script, puede usar ${var@Q} o printf %q en su lugar.
$ wendys="Where's the beef?" $ echo "${wendys@Q}" 'Where'\''s the beef?' $ printf '%q\n' "$wendys" Where\'s\ the\ beef\?