【发布时间】:2013-08-08 19:11:50
【问题描述】:
我有一个从 sql 文件池中获取表的下一个 ID 的命令,现在我尝试使用 shell 函数将此命令作为别名放在 ~/.bashrc 中,但我不知道如何转义 $ 使其进入 awk 而不是被 bash 替换,这是 .bashrc 中的代码:
function nextval () {
grep 'INSERT INTO \""$1"\"' *.sql | \
awk '{print $6}' | \
cut -c 2- | \
awk -F "," '{print $1}' | \
sort -n | \
tail -n 1 | \
awk '{print $0+1}'
}
alias nextval=nextval
用法:# nextval tablename
使用\$ 转义我得到一个错误:awk: backslash not last character on line。
$ 不在双引号内,为什么用 bash 替换它?
【问题讨论】:
-
你不会在
grep命令中混淆单引号和双引号吗?我不明白你为什么用双引号而不是单引号包围$1。 -
行尾的管道符号 (
|) 后不需要转义符 (\)。