当我输入一个带有美元符号vbrstart:
xor eax, eax
mov sp, 0x7a00
mov bp, 0x6000
mov ss, ax
mov ds, ax
mov es, ax
xor ebx, ebx
xor ecx, ecx
push strict dword initializing
push strict word 0x0000
call printmsg ; near call, only 16 bits ret addr stored
jmp end
;push strict dword memloc
;push strict word length
;call printmsg
printmsg:
pop strict dword [store_ret] ; pop dword (ret address + 16 bits- 1st argument)
mov [store_cx], cx ; store_cx = 0
mov [store_esi], esi ; store_esi = ??
pop cx ; cx = initializing
. . .
的值时,环境只读取它的第一部分,这是因为生成的env文件在值中放入双引号而不是单引号。有什么方法吗?该值无法更改,因为它是来自我无法控制的服务的访问令牌。
示例:
生成的env文件如下:
$
运行会导致:
export MY_VAR="my$value"
答案 0 :(得分:2)
它正在评估$value
作为变量并将其转换为空字符串,因为该变量在环境中不存在。尝试转义$
这样的字符:
export MY_VAR="my\$value"
或者,使用单引号来阻止变量扩展:
export MY_VAR='my$value'
答案 1 :(得分:2)
虽然这是一个老问题,但今天我遇到了同样的问题。虽然@ pkaul的解决方案有效,但它很难看。经过一些实验,我发现我只需要使用三个反斜杠:
my\\\$value
答案 2 :(得分:1)
似乎美元符号及其后续字符被解释(例如通过bash)作为环境变量并由其值替换。虽然环境变量$ value(显然)为空,但它只是被评估为“my”和(空字符串)。
我找了一个解决方法花了很长时间,但这个(虽然非常难看)对我有用:只需用
包围你的字符串$(echo '<your string here>')
并确保所有美元符号都使用'\'符号转义,例如使用以下字符串作为ElasticBeanStalk的环境属性值
MY_VAR=$(echo 'my\$value')
因此,值'my $ value'将作为MY_VAR传递给您的应用程序。