在Bash中混合单引号和双引号

在Bash中混合单引号和双引号,bash,scripting,syntax,arguments,Bash,Scripting,Syntax,Arguments,好的,我有一个脚本,它接受一些参数,运行数据,然后将数据重新同步到不同的服务器。问题是要运行数据,我必须获取其中一个参数,然后使用它运行一个报告,这对bash非常不友好(例如[3023.21],[5111.3$]=“5”,等等) 因此,如果我要运行该命令,我需要将参数放在单引号中,这样就不会将参数拉入其中 因此,如果我要运行脚本 arg1 = [5111.3$]="5" runjob specfile.spx '$arg1' 这是行不通的,但是如果我用双引号运行它,那么传入的参数很可能会有双

好的,我有一个脚本,它接受一些参数,运行数据,然后将数据重新同步到不同的服务器。问题是要运行数据,我必须获取其中一个参数,然后使用它运行一个报告,这对bash非常不友好(例如[3023.21],[5111.3$]=“5”,等等)

因此,如果我要运行该命令,我需要将参数放在单引号中,这样就不会将参数拉入其中

因此,如果我要运行脚本

arg1 = [5111.3$]="5"

runjob specfile.spx '$arg1'
这是行不通的,但是如果我用双引号运行它,那么传入的参数很可能会有双引号。有什么办法可以解决这个问题吗?

引用逃避。试一试

[5111.3$]=\"5\"

《高级脚本编写指南》中有一个很好的章节介绍。

在设置值时,在该值周围使用单引号,然后在展开变量时,在变量周围使用双引号:

$ arg1='[5111.3$]="5"'
$ echo "$arg1"
[5111.3$]="5"