变量 $ 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
我有变量 - 值 "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