1. ホーム
  2. bash

[解決済み] Bashスクリプト - 変数の内容を実行するコマンドにする

2022-04-20 08:14:15

質問

あるファイルの行に対応する乱数のリストを定義したPerlスクリプトがあります。次に、これらの行をファイルから抽出するために sed .

#!/bin/bash
count=$(cat last_queries.txt | wc -l)
var=$(perl test.pl test2 $count)

変数 var のような出力を返します。 cat last_queries.txt | sed -n '12p;500p;700p' . 問題は、この最後のコマンドを実行できないことです。私は $var しかし、出力は正しくありません(手動でコマンドを実行するとうまくいくので、問題はありません)。正しい方法は何でしょうか?

P.S.: 確かに私はPerlですべての作業を行うことができましたが、私はこの方法を学ぼうとしています、それは他の状況で私を助けることができるからです。

どのように解決するのですか?

していただくだけです。

#!/bin/bash
count=$(cat last_queries.txt | wc -l)
$(perl test.pl test2 $count)

しかし、Perlのコマンドを後で呼び出したい、そのために変数に代入したい、ということなら

#!/bin/bash
count=$(cat last_queries.txt | wc -l)
var="perl test.pl test2 $count" # You need double quotes to get your $count value substituted.

...stuff...

eval $var

Bashのヘルプにあるように。

~$ help eval
eval: eval [arg ...]
    Execute arguments as a shell command.

    Combine ARGs into a single string, use the result as input to the shell,
    and execute the resulting commands.

    Exit Status:
    Returns exit status of command or success if command is null.