1. ホーム
  2. bash

[解決済み] Bashの引数で引用符を維持するには?重複

2022-10-16 12:22:01

質問

Bashスクリプトで、渡された引数に引用符をつけたいのですが。

./test.sh this is "some test"

というようにすれば、それらの引数を使い、引数リスト全体を引用符で囲んで再利用したいのです。

を使おうとしたのですが \"$@\" を使ってみましたが、これではリスト内の引用符が削除されてしまいます。

どうすればこれを実現できますか?

どのように解決するのですか?

ダブルクォートで囲んだ文字列をシングルクォートで囲むだけです。

./test.sh this is '"some test"'

というわけで、シングルクォートの中のダブルクォートも文字列として解釈されました。

しかし、文字列全体をシングルクォートで挟むことをお勧めします。

 ./test.sh 'this is "some test" '

シェルが何をしているのか、というかスクリプトの引数の解釈を理解するために、こんな感じでちょっとしたスクリプトを書いてみるといい。

#!/bin/bash

echo $@
echo "$@"

次に、異なる文字列でスクリプトを呼び出したときに何が起こるかを確認し、テストしてみましょう。