带有$ in值shell脚本的变量

时间:2017-04-25 12:52:49

标签: linux shell ksh

我有变量 - 有价值" RzQh $ TaH6Vq5bD"但是当我这样做的时候 export TASK_UID = $ 1 其中$ 1是shell脚本的参数,即RzQh $ TaH6Vq5bD 在$ $之后它忽略了任何东西它只给了我" RzQh"

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

3 个答案:

答案 0 :(得分:0)

尝试使用转义序列

Replace RzQh$TaH6Vq5bD with RzQh\$TaH6Vq5bD

它会起作用。

答案 1 :(得分:0)

您可以使用单引号:

a='RzQh$TaH6Vq5bD'

或者只使用$转义\,如下所示:

a="RzQh\$TaH6Vq5bD"

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

答案 2 :(得分:0)

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

在调用脚本时没有正确引用(或转义$),参数将被扩展,这意味着,`$ TaH6Vq5bD'被视为变量,如果没有定义,则不会产生任何结果。你的剧本永远不会知道它。

脚本tst.ksh

#!/bin/ksh
TASK_UID=$1
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