变量 $ in value shell 脚本

Variable with $ in value shell script

我有变量 - 值 "RzQh$TaH6Vq5bD" 但是当我这样做时 导出 TASK_UID=$1 其中 $1 是 shell 脚本的参数,即 RzQh$TaH6Vq5bD 它忽略 $ 之后的任何内容它只给我 "RzQh"

请建议,以便它会考虑原样的价值。

尝试使用转义序列

Replace RzQh$TaH6Vq5bD with RzQh$TaH6Vq5bD

它会起作用。

您可以使用单引号:

a='RzQh$TaH6Vq5bD'

或者像这样用 \ 转义 $

a="RzQh$TaH6Vq5bD"

两者都将保留原始值而不尝试将其作为变量处理。

TASK_UID= 很可能不是问题所在。问题是如何调用脚本。

在调用脚本时没有正确引用(或转义 $),参数将已经展开,这意味着,`$TaH6Vq5bD" 被视为变量,如果未定义,将导致什么都没有。你的脚本永远不会知道它。

脚本tst.ksh

#!/bin/ksh
TASK_UID=
echo "$TASK_UID"

将采取如下行动

prompt $ tst.ksh RzQh$TaH6Vq5bD
RzQh
prompt $ tst.ksh "RzQh$TaH6Vq5bD"
RzQh
prompt $ tst.ksh 'RzQh$TaH6Vq5bD'
RzQh$TaH6Vq5bD
prompt $ tst.ksh RzQh$TaH6Vq5bD
RzQh$TaH6Vq5bD
prompt $ argument='RzQh$TaH6Vq5bD'
prompt $ tst.ksh $argument
RzQh$TaH6Vq5bD