linux 命令符變數

mcxiaoracle發表於2022-06-20

引用及轉義(單引號/雙引號/反斜槓/反引號)

1.  單引號

去除 字串中的所有特殊含義,也即保持引號內的原始內容。

$ echo &  # 在後臺執行echo$ echo '&'  # 列印&$ echo "$PATH"  # 列印系統環境變數$ echo '$PATH'  # 防止變數名擴充套件,直接列印$PATH

允許變數名擴充套件( $var)、子程式( $(command)`command`)和轉義操作( \)。以下字元失去特殊含義:

  1. 作為argument分隔符的空格變為普通空格
  2. 具有強約束的單引號變為普通單引號字元
  3. 模型匹配特殊字元變為普通字元
  4. 擴充套件 $HOME~特殊字元變為普通字元


    

3.  反引號

透過  `<command>`在子程式中執行命令,一般建議用 $(command)替代,顯式執行。

4.  反斜槓


轉義,使特殊字元失去特殊含義。在沒有引號或雙引號內有效,在單引號中無效。




5.  $’…’(ANSI C like strings)


比單引號的條件寬鬆,允許跳脫字元轉義,具有移植性。例如,當需要在read prompt中使用在多行字串時:


read -p "Please assign a new value to the LANG(=$LANG) variable: \n\tLANG=" LANG

echo $LANG

1

2

直接使用\n將無法轉義。此時需引入$''字串:


read -p "Please assign a new value to the LANG(=$LANG) variable: "$'\n\t'"LANG=" LANG

echo $LANG

1

2

如字串中不需要變數擴張,則直接使用$'':


read -p $'Somehow\na multiline prompt\nhere: '

1

也可以將包含轉義的可複用字元作為變數呼叫:


newline=$'\n'

read -p "Somehow${newline}a multiline prompt${newline}here: "



今天遇到一個需求:

在反引號內執行一條命令,而命令引數需要單引號,因為在SQL中單引號就是預設的字串了

結果我試了2種方法包括shell的拼接和字串的轉義都失敗了

使用顯示的command 結果好了。。。

以及數字和字串的轉換函式等。以及命令和字串的組合等



推薦閱讀:

原文連結:https://blog.csdn.net/weixin_43958105/article/details/118728964

https://blog.csdn.net/laobai1015/article/details/119758015

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2901764/,如需轉載,請註明出處,否則將追究法律責任。

相關文章