如何在bash脚本中转义"return"函数

zer*_*bit 5 mysql bash shell

下面的脚本将一堆csv文件加载到mysql数据库中.我试图在循环中执行此函数,但名为return的mysql表字段导致脚本认为它应该执行函数返回.

`around返回是为mysql转义它,它是一个mysql关键字.

for f in *.txt; 
do 
 mysql -uroot -ppassword -e "LOAD DATA INFILE '$f' INTO TABLE info FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (`return`,`id`,`field1`,`field2`);"; 
done
Run Code Online (Sandbox Code Playgroud)

she*_*ter 4

这是 mysql 中使用反引号字符的愚蠢引用约定。你可以用单引号代替,ie ', ie 吗'return'

反引号表示“在 shell 中的当前命令中执行命令替换”,因此它正在尝试运行该命令return

如果你不能使用'return'那么你可以转义所有反引号,比如

\`return\`
Run Code Online (Sandbox Code Playgroud)

IHTH

  • 单引号将列名转换为字符串 - 这不是所需的行为。 (2认同)