- ベストアンサー
findのexecdir内でパイプを使う
現在シェルスクリプトを書いています。findの-execdirの中で次のコマンドを実行したいのですが、パイプをうまく取り扱ってもらうにはどうすればよろしいでしょうか。 tail -n +$[`sed -n "/^###END_OF_SCRIPT###$/{=;q;}" $0` + 1] $0 | tar xf - よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
現在シェルスクリプトを書いています。findの-execdirの中で次のコマンドを実行したいのですが、パイプをうまく取り扱ってもらうにはどうすればよろしいでしょうか。 tail -n +$[`sed -n "/^###END_OF_SCRIPT###$/{=;q;}" $0` + 1] $0 | tar xf - よろしくお願いします。
お礼
trapeziumさん、ご教示いただきまして、ありがとうございます。 cd "${i%/*}" && tail -n +$((`sed -n "/^###END_OF_SCRIPT###$/{=;q;}" $0` + 1)) $0 | tar xf - 先にcdしてからだと、$0が相対パスの場合、動きませんでしたので、この部分を次のようにしたらうまくいきました。 tail -n +$((`sed -n "/^###END_OF_SCRIPT###$/{ = q }" "$0"` + 1)) "$0" | tar xCf "${i%/*}" - 確かにおっしゃる通り、bashはシステム上にある数少ないGNU由来のもののうちの一つでした。迂闊でした。 ありがとうございました。