簡體   English   中英

包裝bash命令是一個字符串

[英]Wrapping bash command that is a string

所以我有這個bash命令:

sqlite3 ${SUMAN_DATABASE_PATH}  "CREATE TABLE suman_run_info (run_id INTEGER, suman_id INTEGER, suite_id INTEGER, test_id INTEGER,
 name TEXT, value TEXT);" >> ${SUMAN_DEBUG_LOG_PATH}

我想在編輯器中手動包裝它。 但是,由於它主要是一個字符串,我似乎無法用\\字符將其包裝。

再說,這真的行不通,TMK:

sqlite3 ${SUMAN_DATABASE_PATH}  "CREATE TABLE suman_run_info \ (run_id INTEGER, suman_id INTEGER, suite_id INTEGER, test_id INTEGER,
 name TEXT, value TEXT);" >> ${SUMAN_DEBUG_LOG_PATH}

如何包裝此bash命令,使其適合100列之內?

我正在尋找這樣的東西:

sqlite3 ${SUMAN_DATABASE_PATH}  "CREATE TABLE suman_run_info (run_id INTEGER, 
     suman_id INTEGER, suite_id INTEGER, test_id INTEGER,
     name TEXT, value TEXT);" >> ${SUMAN_DEBUG_LOG_PATH}

我讀過相鄰的字符串應該自動連接,所以也許行得通嗎?

   sqlite3 ${SUMAN_DATABASE_PATH}  "CREATE TABLE suman_run_info" 
   "(run_id INTEGER, suman_id INTEGER, suite_id INTEGER, test_id INTEGER,"
     "name TEXT, value TEXT);" >> ${SUMAN_DEBUG_LOG_PATH}

您不需要任何東西,至少在這種情況下; SQL可以毫無問題地處理命令中的換行符。 這應該可以正常工作:

sqlite3 "${SUMAN_DATABASE_PATH}"  "CREATE TABLE suman_run_info
  (run_id INTEGER, 
   suman_id INTEGER,
   suite_id INTEGER,
   test_id INTEGER,
   name TEXT,
   value TEXT
  );" >> "${SUMAN_DEBUG_LOG_PATH}"

請確保在反斜杠之后沒有任何內容

sqlite3 ${SUMAN_DATABASE_PATH}  "CREATE TABLE suman_run_info \
    (run_id INTEGER, suman_id INTEGER, suite_id INTEGER, \
    test_id INTEGER, name TEXT, value TEXT);" >> ${SUMAN_DEBUG_LOG_PATH}

或者,甚至更好(請參見下面的評論):

 sqlite3 "${SUMAN_DATABASE_PATH}"  "CREATE TABLE suman_run_info \
    (run_id INTEGER, suman_id INTEGER, suite_id INTEGER, \
    test_id INTEGER, name TEXT, value TEXT);" >> "${SUMAN_DEBUG_LOG_PATH}"

我喜歡使用HEREDOC

sqlite3 ${SUMAN_DATABASE_PATH} <<EOF  >> ${SUMAN_DEBUG_LOG_PATH}
CREATE TABLE suman_run_info
  (run_id INTEGER, 
   suman_id INTEGER,
   suite_id INTEGER,
   test_id INTEGER,
   name TEXT,
   value TEXT);
EOF

暫無
暫無

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

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