我有一個包含一個文件:grep的字符串,從文件的報價不工作
2016-08-15 21:02:59,007: 233-670-rundeck-dispatch-script.tmp.sh: Info: Arg: -H server -S SrvCtrl,SNMP -A \"restart\" -CS \"Undefined\" -RS \"Undefined\" -CT \"Undefined\" -RT \"Undefined\" --LogServer logserver:5610
正如我試圖尾巴的執行日誌,我檢查,如果該日誌文件包含了最新的日誌。看看這個字符串是否存在。我使用grep -F,grep的-E,grep的-FFxq 試過因此,在短期它歸結爲:
CurrentLog="2016-08-15 21:02:59,007: 233-670-rundeck-dispatch-script.tmp.sh: Info: Arg: -H server -S SrvCtrl,SNMP -A \"restart\" -CS \"Undefined\" -RS \"Undefined\" -CT \"Undefined\" -RT \"Undefined\" --LogServer logserver:5610"
請注意,CurrentLog充滿這樣的:
CurrentLog=$(echo "$OutputTail" | jq ".entries[$EntryCount].log" | sed -e 's/^"//' -e 's/"$//')
意義,我可以只是單引號。
grep -Fxq "$CurrentLog" "/usr/local/nagios/libexec/DAF-988e7506-36c3-47e3-8ef2-428309e2c7f7-670.log"
好像我需要逃避這兩個「」「和‘\’。我怎樣才能在一個命令這樣做嗎?我希望在-F不會要求我增加額外的逃避?
你可能會考慮通過http://shellcheck.net/運行的代碼習慣的問題和固定它認定。一個沒有引號的擴展(即''CurrentLog' vs'「$ CurrentLog」')幾乎總是錯誤的。 –
我會考慮自己的答案,但問題目前尚不完整,無法獨立評估答案是否完全正確。您可能會考慮嘗試添加一個最小的,完整的,可驗證的示例(根據http://stackoverflow.com/help/mcve) - 這涉及的一部分是構建一個包含展示正確功能所需的所有內容的示例(無關-stage'/ usr/local/nagios'文件,例如使用但未顯示;沒有提及處理輸出的日誌,但未顯示原始數據;等等),以及除去此類驗證所需的任何內容*。 –
...因爲在這裏,如果您只接受來自'jq'的內容正確處理的答案,那麼您可以考慮提供一個JSON格式的原始輸入示例,這樣人們可以相應地做出回答。 –