私は、最も些細な作業であるはずのことから悪夢を見ています。
私の最終的な目標は、bashスクリプトから次のコマンドを発行することです。
sqlite3 my_db.db '.read my_file.sql'
ここには2つの落とし穴があります
。1。一重引用符は必須であり、たとえば二重引用符に置き換えることはできません
。2 my_file.sql
.実行時にのみ認識される変数です。
したがって、必要なのは、bashに、一方では変数値を含み、他方ではその値を一重引用符で囲む必要がある文字列を作成させる方法です。
また、AWKやPerlなどの追加ツールに依存しないソリューションを強く望んでいます。本当に必要な場合はsedかもしれません。
ありがとう。
ジョナサンとネルソンに感謝します。
3つの提案をすべて試しましたが、すべて失敗しました。
簡単にするために、問題を次のように減らしました。
次のスクリプト(tst.sh)を作成しました。
#!/bin/bash
file=/tmp/1
ls "'"$file"'"
ls \'$file\'
ls "'$file'"
次に、次のコマンドを発行します。
$ touch /tmp/1
$ ls '/tmp/1'
/tmp/1
$ ./tst.sh
'/tmp/1': No such file or directory
'/tmp/1': No such file or directory
'/tmp/1': No such file or directory
引用符が実際に追加されたようですが、結果のコマンドは手動で入力した場合と同じではありませんでした。
何か案は ?