POSIXを使用する次の「読​​み取り専用」は正しいですか?

POSIXを使用する次の「読​​み取り専用」は正しいですか?

以下を読み取り専用として定義しました。

readonly root_command='sudo -s'

後で私のスクリプトで次のように使用されました。

exec $root_command

私の質問は、おそらく私がそうかもしれないということです。遅いそれとも何かが、私は完全に理解できません。POSIX のマニュアルページ、たとえば、一重引用符を使用できますか?それとも二重引用符を使用する必要がありますか?-pそのようなオプションの目的は何ですか?

ありがとうございます。

答え1

POSIXによるとにはreadonly2つの形式があります。

  1. readonly var、これはシェル変数をvar読み取り専用としてマークし、同時にオプションでvar()に値を割り当てます。readonly var=value

  2. readonly -p、すべての読み取り専用変数の名前と値を印刷します。

これらは結合されません。現在の読み取り専用変数をすべて表示するために使用でき、変数を読み取り専用として表示するために-p使用することもできます()。readonly-p

変数を読み取り専用としてマークすると、値を指定することもできます(後で変更できないため、この値は永続的な値になります)。これは任意の変数の割り当てと同じであり、単語があるvar=value場所で型をとるので、通常valueと同じ規則(変数の拡張を防ぐために一重引用符、変数の拡張を許可するには二重引用符など)を使用して適切に引用する必要があります。必要です。 )。

これはのexec $root_command現在の値によって異なります。$IFSコマンドを保存するには、変数ではなく関数を使用することをお勧めします。

関連情報