問題的上下文是,我試圖將單引號的密碼傳遞給openssl配置文件的input_password參數。sed用反斜槓單引號替換openssl配置文件的單引號
從openssl configuration file manual摘自:
有可能通過使用任何種類報價 或\字符逃避某些字符。通過使一行的最後一個字符爲\ ,字符串可以分佈在多行上。此外,序列 \ n,\ r,\ b和\ t被識別
我假定單引號可以轉義。問題是我很難用sed生成單引號。
這樣,我的意思是,如果從腳本或從命令行運行,下列表達式不會產生相同的結果。看看下面的命令:
cut -d: -f2 "$EMPLOYEE_CREDENTIALS_FILE"| sed -e "s|'|\\\'|g"
其中「$ EMPLOYEE_CREDENTIALS_FILE」是格式化像
username:password
當我直接在bash運行此命令時,它會產生我以爲openssl.conf輸出文件容忍:
tentacle caravan sovereignty appraisal sass\'s
當我在腳本運行它,它只是產生正常的轉義密碼:
tentacle caravan sovereignty appraisal sass's
我想知道我做錯了什麼。
這似乎很清楚問題是什麼。 「我有一個問題,試圖將帶有單引號的密碼傳遞給openssl配置文件的input_password參數。」我想出了一個不起作用的解決方案。因此,答案應該糾正命令以允許轉義發生,或者提供另一種方法來處理帶有單引號的密碼短語。我不知道我能否更清楚。 – 2013-03-11 01:56:06
我「認爲」,因爲文檔沒有明確說明單引號是否可以轉義: 「可以通過使用任何引號或\字符來轉義某些字符。通過將一行的最後一個字符\值字符串可以分佈在多行中。另外,序列\ n,\ r,\ b和\ t被識別爲「從http://www.openssl.org/docs/apps/config.html獲取」。 – 2013-03-11 02:22:17