簡體   English   中英

帶有$的值的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=$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM