次のスクリプト
#!/bin/bash
QUERY='select * from cdr;'
MYROWS=$("sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db '${QUERY}'")
私にください
./bla.sh: row 35: sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;': file or directory not found
自分で実行すると
sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db 'select * from cdr;'
だとしたら大丈夫です。エラーメッセージに表示されない引用符にいくつかのエラーがあるようです。一重引用符が必要です。
select * from cdr;
何が間違っているのかについてのヒントをありがとうございます!
答え1
内部には、$(…)
一般的な構文を使用するシェルコマンドがあります。コマンドで意図したフラグメント全体を二重引用符で囲むと、コマンドの最初の単語である単一の単語として解析されるため、コマンド名として解釈されます。
また、引用が$QUERY
正しくありません。変数を拡張するには二重引用符が必要です。
MYROWS=$(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")