私はクエリを書きました:
function print_ui_hosts
{
local sql = "select ........."
print_sql "$ sql"
}
local sql - 非常に長い文字列。クエリがフォーマットされていません。文字列を複数の行に分割するにはどうすればよいですか?
必要に応じて新しい行を挿入するだけです
sql="
SELECT c1, c2
from Table1, Table2
where ...
"
シェルは終了引用符を探します
read
以下に示すように、ヒアドキュメントで使用します。
read -d '' sql << EOF
select c1, c2 from foo
where c1='something'
EOF
echo "$sql"
ほとんどの場合、他の回答で十分ですが、追加の回答を1つ提供したいと思います。
文字列を複数行に渡って書きたかったのですが、その内容は 1 行である必要がありました。
sql=" \
SELECT c1, c2 \
from Table1, ${TABLE2} \
where ... \
"
これが少しトピックから外れている場合は申し訳ありません(SQLにはこれは必要ありませんでした)。ただし、複数行のシェル変数を検索すると、この投稿が最初の結果に表示され、追加の回答が適切であると思われました。
同様の質問に対する dimo414 の回答のおかげで、これは彼の優れたソリューションがどのように機能するかを示し、テキストに引用符と変数を簡単に含めることができることを示しています。
$ ./test.sh
The text from the example function is:
Welcome dev: Would you "like" to know how many 'files' there are in /tmp?
There are " 38" files in /tmp, according to the "wc" command
#!/bin/bash
function text1()
{
COUNT=$(\ls /tmp | wc -l)
cat <<EOF
$1 Would you "like" to know how many 'files' there are in /tmp?
There are "$COUNT" files in /tmp, according to the "wc" command
EOF
}
function main()
{
OUT=$(text1 "Welcome dev:")
echo "The text from the example function is: $OUT"
}
main