Bashは、次の質問への回答で説明されているように、履歴拡張に感嘆符を使用します。この問題(たとえば、sudo !!
前のコマンドライン実行を使用するsudo
)しかし、次のコマンド(単一の感嘆符など)を実行するタスクを説明する場所が見つかりません。
!
何も印刷せずに1で終了するようですが、なぜこれが起こるのかはわかりません。オンラインとBashのマニュアルページを見ましたが、「予約語」という事実以外は何も見つかりませんでした。しかし、}
次のコマンドを実行しました。
}
印刷エラー:
bash: syntax error near unexpected token `}'
ベストアンサー1
孤独!
コマンドの開始時にコマンドまたはパイプの終了状態を無効にします。:コマンドが終了すると(失敗)0
に切り替わり、ゼロ以外の値で終了すると(成功)に終了に1
切り替わります。0
この使用法は Bash マニュアルに文書化されています。
予約語「!」がパイプの前に来る場合、終了状態は上記の終了状態の論理的否定です。
後続のコマンドを持たないAは、!
何もせずにtrueを返す空のコマンドを無効にします(:
コマンド)。したがって、trueをfalseに反転し、状態1で終了しますが、エラーは発生しません。
!
中には他の用途もあります。test
そして[[
条件付きテストを無効にするコマンド。これらはあなたが見ているものとは何の関係もありません。あなたの質問とそのような場合は、歴史的な拡張とは関係なく、他の用語!
とは別のものです。