【Linuxコマンド解説事典】 055.readonlyコマンド:シェル変数や関数を読み取り専用としてマークする

読み取り専用

シェル変数または関数を読み取り専用としてマークする

文法

readonly [-aAf] [name[=value] ...]
readonly -p

主目的

1 つ以上の変数を定義し、読み取り専用属性を設定します。
1 つ以上の定義された変数に読み取り専用属性を設定します。
読み取り専用属性を持つすべての変数を表示します。
1 つ以上の定義された関数に読み取り専用属性を設定します。
読み取り専用属性を持つすべての関数を表示します。

オプション

-a: 配列を指します。
-A: 連想配列を指します。
-f: 関数へのポインタ。
-p: すべての読み取り専用変数を表示します。
--:以降のオプションは無効です。

パラメータ

name(オプション): 変数名または関数名
value(オプション): 変数の値

戻り値

readonlytrue不正なオプションまたは不正な名前を指定しない限り、戻り値が返されます。

# 定义变量并增加只读属性
readonly var1=13 var2
readonly -a arr1=(1 2 3 4 5) arr2=('z' 'x' 'c')
# 必须有 '-A' 选项
readonly -A dict1=(['key1']='value1')
# 先定义变量、函数,然后再为它们添加只读属性
max=3
readonly max

# 数组定义时可以不加 `declare -a`
seasons=('spring' 'summer' 'autumn' 'winter')
# 为数组添加只读属性时可以不加 `-a` 选项
readonly seasons

declare -A man=(['age']=23 ['height']='190cm')
# 为关联数组添加只读属性时可以不加 `-A` 选项
readonly man

function foo(){
    
     echo 'bar'; }
# 为函数添加只读属性时必须加 `-f` 选项
readonly -f foo
# 显示全部只读变量,以下两个命令的显示结果一样
readonly
readonly -p
# 显示全部拥有只读属性的数组
readonly -a
# 显示全部拥有只读属性的关联数组
readonly -A
# 显示全部拥有只读属性的函数
readonly -f

よくある間違い

読み取り専用変数の場合、ユーザーがその値を変更すると、すぐにエラーが報告されます。たとえば、このコマンドを使用して読み取り専用変数「test」を定義し、その値を「ok」に初期化するには、次のコマンドを入力します。

[root@localhost ~]# readonly test='ok'        #定义只读变量并初始化 

その後、ユーザーが読み取り専用変数を直接変更すると、以下に示すようにエラーが報告されます。

[root@localhost ~]# test='my'                 #试图修改只读变量的值
-bash: test: readonly variable

ユーザーが読み取り専用変数の値を変更しようとすると、変数が読み取り専用変数であることを確認するメッセージが表示されます。

注:
このコマンドは bash 組み込みコマンドです。関連するヘルプ情報については、コマンドを参照してくださいhelp
declare +r読み取り専用属性は削除できません。また、unset読み取り専用変数は削除できません。

ゼロから学ぶpython

【ゼロから学ぶPython】 92. Pythonのリクエストライブラリを使ってHTTPリクエストを送信し、レスポンスを処理する
【ゼロから学ぶPython】 91. デコレータと辞書を使ってリクエストパスの簡単なWebアプリケーションを管理する
【ゼロから学ぶPython】 93. 辞書管理を使うリクエストパス
【ゼロから学ぶPython】 89. WSGIを使ってシンプルで効率的なWebサーバーを構築する
【ゼロから学ぶPython】 88. WSGIインターフェースの詳細解説:シンプルで効率的なWeb開発を実現する
【ゼロから学ぶPython】 87. 手動で構築するHTTP サーバー Python の実装とマルチスレッド同時処理
[ゼロから学ぶ Python] 86. ブラウザとサーバー通信における HTTP プロトコルとその役割を深く理解する
[ゼロから学ぶ Python] 85. Python プロセス プールの並列コンピューティング技術の応用
[ゼロから学ぶPython】 84. スレッドとプロセスを深く理解する
【ゼロから学ぶPython】 83. Pythonのマルチプロセスプログラミングとプロセスプールの利用
【ゼロから学ぶPython】 82. マルチベースのチャットプログラムの実現スレッド化
[ゼロから学ぶ Python] 81. Python など スレッド通信とキューの応用
[ゼロから学ぶ Python] 80. グローバル変数へのスレッド アクセスとスレッド セーフティの問題
[ゼロから学ぶ Python] 79. グローバル変数へのスレッド アクセスとスレッドセキュリティの問題
[ゼロから学ぶ Python] 78. ファイル ダウンロードの事例
[ゼロから学ぶ Python] 77. TCP サーバーのプログラミングと注意事項
[ゼロから学ぶ Python] 76. サーバーとクライアント: ネットワーク通信の主要コンポーネント
[ゼロから学ぶ Python] 75 TCPプロトコル:信頼性の高いコネクション指向の伝送層通信プロトコル
【ゼロから学ぶPython】 74. UDPネットワークプログラム:ポートの問題とバインディング情報を詳しく解説
【ゼロから学ぶPython】 73. UDPネットワークプログラム – データの送信
【ゼロから学ぶPython】 72. ソケット通信とソケットの作成 【ゼロから学ぶPython】のやり方
71. ネットワークポートとその機能
【ゼロから学ぶPython】 70. ネットワークの通信方法とその応用:ルータへの直接通信から複数のネットワークを接続するまで
【ゼロから学ぶPython】 69.ネットワーク通信とIPアドレス分類分析
[ゼロから学ぶPython] 68. Python正規表現の貪欲モードと非貪欲モード
[ゼロから学ぶPython] 67. Pythonのreモジュール:正規置換と高度なマッチング技術
[ゼロから学ぶPython] 66 .正規表現を深く理解する:パターンマッチングとテキスト処理のための強力なツール
【ゼロから学ぶPython】 65. Pythonの正規表現修飾子とその応用を詳しく解説
【ゼロから学ぶPython】 64. re.compileメソッドin Python正規表現 詳細解説
【ゼロから学ぶPython】 63. 正規表現のre.Matchクラスとその属性、メソッドの紹介
【ゼロから学ぶPython】 62. Pythonの正規表現:強力な文字列マッチングツール
【ゼロから学ぶPython】ゼロ】 61. Python のプロパティ属性の詳しい説明と応用例
【ゼロから学ぶ Python】 60. 探索ジェネレータ:反復のための柔軟なツール
【ゼロから学ぶ Python】 59. イテレータ:データトラバーサルを最適化する効率的なツール
【ゼロから学ぶ Python 】ゼロから】 58. Pythonのカスタム例外と例外発生方法
【ゼロから学ぶPython】 57. Pythonのwithキーワードを使ってリソースを正しくクローズする
【ゼロから学ぶPython】 56. プログラミングにおける例外処理の重要性と応用
【ゼロから学ぶPython】 55. Pythonのシリアライズと処理 デシリアライズ、 JSONとpickleモジュールの応用
【ゼロから学ぶPython】 54. メモリにデータを書き込む
【ゼロから学ぶPython】 53. CSVファイルとPython CSVモジュール
【ゼロから学ぶPython】 52. ファイルの読み書き - Pythonファイル操作ガイド
[ゼロから学ぶPython】 51. Pythonでのファイルのオープンとクローズとその応用
【ゼロから学ぶPython】 49. Pythonのオブジェクト関連の組み込み関数とその使い方
【ゼロから学ぶPython】 48 . 継承とその使い方を詳しく解説Python の多重継承
[ゼロから学ぶ Python] 47. オブジェクト指向プログラミングにおける継承の概念と基本的な使い方
[ゼロから学ぶ Python] 46. Python の __new__ および __init__ メソッドの分析とシングルトン デザイン パターン
[ゼロから学ぶ Python] 45 . Pythonのクラスメソッドと静的メソッド
【ゼロから学ぶPython】 44. オブジェクト指向プログラミングのプライベート属性とメソッド
【ゼロから学ぶPython】 43. Pythonのオブジェクト指向プログラミングの例 属性とクラス属性
【ゼロから学ぶPython】 42. Pythonの組み込み属性とメソッド
【ゼロから学ぶPython】 41. Pythonの魔法のメソッド(2)
【ゼロから学ぶPython】 40. Pythonの魔法のメソッド(1)
【ゼロから学ぶPython】 39. オブジェクト指向の基本文法と応用例
【ゼロから学ぶPython】 38. Pythonパッケージの利用とインポート
【ゼロから学ぶPython】 37. Pythonカスタムモジュールの使い方と注意点
【ゼロから学ぶPython】 】 36. サードパーティパッケージ管理にPythonでpipを使う方法とスキル
【ゼロから学ぶPython】 35. Pythonの共通システムモジュールとその使い方
【ゼロから学ぶPython】 34. Pythonモジュールのインポートと使い方を詳しく解説
【ゼロから学ぶPython】 33. デコレータの役割(2)
【ゼロから学ぶPython】 32. デコレータの役割(1)
【ゼロから学ぶPython】 31. 高階関数とクロージャを深く理解するPython
【ゼロから学ぶPython】 30. 再帰関数と無名関数を深く理解する
【ゼロから学ぶPython】 29. 「関数パラメータの詳細解説」 - Python関数パラメータの使い分けを理解する
【ゼロから学ぶPython】 28 . Pythonのローカル変数とグローバル 変数
【ゼロから学ぶPython】 27. Python関数の使い方と入れ子呼び出し
【ゼロから学ぶPython】 25. 関数:コード作成効率を上げるツール
【ゼロから学ぶPython】 24. 文字列操作Pythonのトラバース方法とトラバーサル方法
【ゼロから学ぶPython】 23. Pythonの集合(set)の使い方とよくある操作
【ゼロから学ぶPython】 22. Pythonの辞書と辞書の変数の追加・削除・変更・問い合わせ
【 Pythonをゼロから学ぶ】 21. Pythonのタプルと辞書
【ゼロから学ぶPython】 20. Pythonのリスト操作スキルと例題
【ゼロから学ぶPython】 19. リストのループとリストのネスティングの応用
【ゼロから学ぶPython】 18. Pythonのリストの基本操作を詳しく解説(1)
【ゼロから学ぶPython】 17. Pythonの文字列の整形方法(2)
【ゼロから学ぶPython】 16. Pythonの文字列の整形方法(1)
【ゼロから学ぶPython】 15. 文字列と文字セットのエンコーディングを深く理解する
【ゼロから学ぶPython】 14. Pythonの文字列のよくある操作(2)
【ゼロから学ぶPython】 13. Pythonの文字列のよくある操作(1)
【ゼロから学ぶPython】 12. Pythonの文字列の操作と応用
【ゼロから学ぶPython】 11. Pythonのループ文と制御フロー
【ゼロから学ぶPython】 10. Pythonの条件文とifネストの詳細解説
【ゼロから学ぶPython】 09. Pythonの条件判定文
【ゼロから学ぶPython】 08. ビット演算がわかるPython演算子、演算子の優先順位
【ゼロから学ぶPython】 07. Pythonの演算子を詳しく解説:代入、比較、論理演算子
【ゼロから学ぶPython】 06. Pythonで算術演算子を使って計算や文字列連結をする
【ゼロから学ぶPython】 05. Python の出力と入力
【ゼロから学ぶ Python】 04. Python プログラミングの基礎: 変数、データ型、識別子
【ゼロから学ぶ Python】 03. Python 対話型プログラミングと詳細なアノテーション
【ゼロから学ぶPython】02. 開発ツールの紹介
【ゼロから学ぶPython】01. Pythonのインストールと設定

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/132662470