タグ

bashとエラーに関するiwwのブックマーク (5)

  • Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい - The Third Law

    こんばんは、id:maku693です。 タイトルでほぼ全部説明しましたが、Github Actionsでちょっとハマりました。 Github Actionsのワークフローでは工夫しないとyesコマンドを使えないので、代わりにecho yを使うと手っ取り早いです。 これに気づいたのは、[y/N]どちらかの入力を待つことで処理を続行していいか聞いてくるプログラムをワークフロー中で使いたかったので、yesコマンドを使ってyを入力させようとしたところ、yes: standard output: Broken pipeというエラーが出て正常にワークフローが終了しなかったためです。 手元 (macOS) で実行してもエラーにならないので不思議に思って調べてみると、bashにpipefailオプションが指定されている*1のと、yesコマンドがSIGPIPEを受け取って終了する前提で使われているのが原因で

    Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい - The Third Law
    iww
    iww 2021/01/09
    『yesコマンドを使ってyを入力させようとしたところ、yes: standard output: Broken pipeというエラーが出て正常にワークフローが終了しなかった』 そうなのか。 面白い
  • bashの初見殺しっぷりがハンパない件 - Qiita

    「これ知らなきゃ分からないだろ!」 「エラーの原因はわかったけど、なんか腑に落ちない」 いま悩んだ2時間返せ! bashというか、UNIXのコマンドに慣れてない 僕みたいな新人エンジニアが 気をつけた方がいいポイントまとめました。 あいことばをわすれない 微妙にエラーが出ないため、気づかないまま進んでしまい、 のちのち絶妙に致命的なことになってしまうので注意。 一行目忘れて2時間悩みました 二行目のオプションつけなかったため2時間悩みました setのオプションはお好みで あいことばの解説: http://qiita.com/magicant/items/f3554274ee500bddaca8 半角スペースをつけるな!半角スペースをつけろ! shellさんはスペースに非常に神経質です。 よくある変数代入では=の前後にスペースいれてはダメです。

    bashの初見殺しっぷりがハンパない件 - Qiita
    iww
    iww 2018/08/23
    シンタックスシュガーがほとんどないので、原理原則を押さえずに検索で出てきた結果をつまみ食いしていると痛い目を見る。 という話
  • 標準出力と標準エラー出力とパイプとリダイレクションまとめ(2016年9月9日現在実に怪しい) - Qiita

    #include <stdio.h> int main(int argc, char *argv[]) { fprintf(stdout, "1\n"); fprintf(stderr, "2\n"); return 0; } ./a # 1 2 と表示される (実態は 2 は標準エラー出力) ./a > b.txt # 2 と表示され 1 は b.txt へ ./a >& b.txt # 2 1 と b.txt へ出力される ./a 2>&1 > b.txt # 2 と表示され 1 は b.txt へ (実態は 2 は標準出力) ./a | less # less で 1 が見られ 2 は標準エラー出力で見られる ./a |& less # less で 2 1 が見られる ./a >& /dev/null | less # less で 1 が見られる (2 は捨てられる) ※これが理

    標準出力と標準エラー出力とパイプとリダイレクションまとめ(2016年9月9日現在実に怪しい) - Qiita
    iww
    iww 2016/08/08
    標準エラー出力も流したいときは |&
  • ARG_MAXとshell組み込みコマンド(bash) - 半径5メートル

    twitterのfriend timelineのログをファイルベースでログとってたら*1、気がつくとarchiveのディレクトリに5万件超のファイルが蓄積されていました。 これだけの件数のファイル群はrmコマンドで一気に消そうとしても、消せません。 -bash-3.00$ rm * -bash: /bin/rm: 引数リストが長すぎますこの引数リストの長さの上限はARG_MAXというマクロ定数で定義されているようです。 -bash-3.00$ getconf ARG_MAX 131072ARG_MAXの制限により、コマンドに渡す引数が(うちの環境では)131072byteを超えてしまうと上記のエラーになってしまいます。この場合は一つのファイルが「786587805」のような名前で保存されている為、5万件超のファイルを指定する「*」のファイルグロブが展開されたファイルリストの文字列が余裕で1

    ARG_MAXとshell組み込みコマンド(bash) - 半径5メートル
  • シェルリファレンス

    【標準入力】 read ---------------------------------------------------------------------- #!/bin/sh read timeofday echo $timeofday exit 0 ---------------------------------------------------------------------- 【条件】 test([ ])コマンド ---------------------------------------------------------------------- ファイル hoge の存在を確認する ex1) if test -f hoge then ... fi ex2) if [ -f hoge ] then ... fi ex3) if [ -f hoge ]; the

  • 1