Shell 逃逸$csh

Shell 逃逸$csh,shell,csh,Shell,Csh,如何在csh中转义$?内部(“”)。我正试图这样做,但无法逃脱标志($) 这很管用,但不足以满足我的需要 alias e echo \\!:2-$ 尝试改用单引号-别名e'echo\!:2-$”。您还需要反斜杠来避开历史替换。对这个老问题的建议答案不正确 这可以在CSH和其他shell中完成,并且不考虑引号的类型,但是对于某些shell,如果使用双引号,则需要首先退出双引号 以下内容应该适用于(几乎)所有shell,因此为了简单起见,我使用它。我使用backquote来获取命令的输出,因为它更

如何在csh中转义
$
?内部(
“”
)。我正试图这样做,但无法逃脱标志(
$

这很管用,但不足以满足我的需要

alias e echo \\!:2-$

尝试改用单引号-
别名e'echo\!:2-$”
。您还需要反斜杠来避开历史替换。

对这个老问题的建议答案不正确

这可以在CSH和其他shell中完成,并且不考虑引号的类型,但是对于某些shell,如果使用双引号,则需要首先退出双引号

以下内容应该适用于(几乎)所有shell,因此为了简单起见,我使用它。我使用backquote来获取命令的输出,因为它更简单,并且避免了添加额外的“$”符号(更现代的样式)。请注意“$”的不同用法,以实际获取一个变量并作为一个文本(为了方便起见,在单引号内和单引号外)

这应该适用于大多数shell

命令示例:

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."
My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.
echo“我的终端是$term,在/dev中找到的第一个文件是
美元符号是'echo'$'''`',一份报纸的价格是'echo'$'`` 2.50美元
输出:

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."
My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.
我的终端是xterm,在/dev中找到的第一个文件是美元符号
是“$”,一份报纸要2.5美元。

如果确实需要在双引号字符串中使用
$
字符,请尝试将变量(最好是在~/.tcshrc文件中)设置为该字符

例如,这里有一个别名,在给定命令
bak filename ext
的情况下,它以“filename.old24.ext”格式创建顺序编号的备份文件:

set DOLLAR='$'
alias bak '/bin/ls -1v \!:1.old*.\!:2 | tail -n 1 | awk -F"." "{printf substr(${DOLLAR}2,4)+1}" | xargs -0 -ISEQ cp -ip \!:1.\!:2 \!:1.oldSEQ.\!:2'

注意,在传递给awk的字符串中使用了
${DOLLAR}
。当shell执行别名时,它将被一个实际的
$
字符替换。

这很好,我只想指出,在“.”中转义$sign没有解决方案。@PabloKarlsson-这本质上就是单引号和双引号之间的区别。后者允许替换,例如变量扩展和特殊字符,前者禁用(大多数)替换;sshfoo@bar“$f | thing&&echo Success | | echo Failure,退出代码$?”我需要$f的双引号,但我需要$?要传递到远程主机进行评估。我试过\$?,但那不起作用。csh是否有不同的逃逸方法?