最初のリクエストが明確ではないので申し訳ありません。
私は非常に単純なbashスクリプトコマンドを使用しようとしましたが、一重引用符文字のために問題が発生しました。私の意図は、コマンドラインで変数(サブネット表記)を許可し、特定の構文(混乱した一重引用符を含む)を使用してファイアウォールを実行するコマンドを実行するシェルスクリプトを作成することです。 cmdコマンドを使用して再ロードします。ファイアウォールルール。正しいスクリプトを作成するためにprintfを使用していますが、出力に ""文字を取得せずにテキスト文字列/行を実行する方法がわかりません。目的の文字列で変数を作成しようとすると、状況はめちゃくちゃになります。また。
したがって、「./banish.sh 1.22.228.0/24」と入力すると、printf生成コマンドが実行され、ファイアウォールルールが再ロードされます。
私の現在のコード:
#! /bin/bash
printf "firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=$1 drop'\n"
firewall-cmd --reload
私は "printf"コマンドが実際にテキストを実行するのではなく、画面にエコーすることを知っています。 ( "firewall-cmd --reload" 行が行ったように、printfの出力を変数に割り当てようとしたら、startすべてのバックスラッシュを入れます。
どんなアイデアがありますか?ティア
ベストアンサー1
みんなの助けに感謝します。結論は、私は:
- 考えが多すぎる
- 実行される文字列に一重引用符を使用する必要があると思いましたが、実際には二重引用符が有効です。
問題は、コマンドに一重引用符を正しく含めようとしていると確信しています。私がついに得た効果的な結果は次のとおりです。
#! /bin/bash
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=$1 drop"
firewall-cmd --reload
これでスクリプトを実行すると、すべてがうまく機能します。こんな小さな仕事に応援してくれてありがとう。