場合によっては、シェルスクリプトで単一のコマンドを実行する必要があります。
私はsed -n 'line_num p'
その行を印刷できることを既に知っています。しかし、コマンドで出力された特定の行をどのように実行できますか?
答え1
この試み:
sed -n 'line_num p' | bash
または、コマンドにスペースが含まれていない場合
"$(sed -n 'line_num p')"
答え2
この操作をインタラクティブに実行すると、bash 履歴に次の行を書き込むことができます。
history -s "$(sed -n 'line_num p')"
その後、pressは↑Enterreadlineバッファに行を挿入して実行します。これにより、遅すぎる前に行を閲覧する機会が得られます。
答え3
あなたはできます...
{ 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/"$$"
答え4
Bash では、次のコマンドを実行できます。
for line in $(cat file.txt); do command $line; done