回答:
この男を試してください=):
sed -n 'line_num p' | bash
または
"$(sed -n 'line_num p')"
line_num
との間にスペースを入れる必要はありません。p
たとえば、line_num
123の場合は、できsed -n 123p | bash
ます。そして、sh
十分であれば、のsh
代わりに使用しますbash
。
sed -n 'line_num p' | sh
別の解決策になるでしょうか?これはもっと互換性がありますか?
sh
実際に何であるかにも依存します。Debian (および派生)システムでsh
は通常dash
です。スクリプトが記述されている場合dash
(または移植可能な構文に依存している場合)、おそらくそうですが、記述されているbash
場合はほぼ間違いなくそうです。
history
実行して900行目を実行したい場合は、900行目を実行できますか?
これをインタラクティブに行う場合は、bashの履歴に次の行を書き込むことができます。
history -s "$(sed -n 'line_num p')"
次に、を押し↑Enterて行をreadlineバッファーに挿入し、実行します。手遅れになる前に、一目でラインを確認できます。
man history
history
は組み込みなので、ドキュメント化されていますhelp history
(またはman bash
、しかしそれはたくさんの読み物です)。上記を引用するhistory -s
と、「ARGを単一のエントリとして履歴リストに追加する」
できるよ...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
これは$NUM
、シェル変数のスクリプトから行のみを取得$line
し、現在のシェルでコマンドとして評価します。
これを行う別の方法は次のようになります。
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
eval
です。
gnu sed
持っているe
何かのようなので、フラグをsed "${NUM}"'!d;s/^//e;q'
作業もだろう