在bashrc的shell函数中转义awk $

Rad*_*ris 1 bash awk

我曾经认为,从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
Run Code Online (Sandbox Code Playgroud)

用法: # nextval tablename

逃避\$我得到一个错误:awk: backslash not last character on line.这$不是双引号,为什么bash正在取代呢?

kon*_*box 5

也许你真正需要改变的部分就是这个

'INSERT INTO \""$1"\"'
Run Code Online (Sandbox Code Playgroud)

"INSERT INTO \"$1\""
Run Code Online (Sandbox Code Playgroud)