1. ホーム
  2. linux

[解決済み] シェルスクリプトでコマンドを変数に格納するにはどうすればよいですか?

2022-04-24 09:23:26

質問

後日使用するコマンドを変数に格納したい(コマンドの出力ではなく、コマンドそのもの)。

次のような簡単なスクリプトがあります。

command="ls";
echo "Command: $command"; #Output is: Command: ls

b=`$command`;
echo $b; #Output is: public_html REV test... (command worked successfully)

ところが、もう少し複雑なことをやってみると、失敗する。例えば

command="ls | grep -c '^'";

と出力されます。

Command: ls | grep -c '^'
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access '^': No such file or directory

このようなコマンド(パイプ/複数のコマンドを含む)を、後で使用するために変数に保存するにはどうすればよいでしょうか?

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

evalを使用します。

x="ls | wc"
eval "$x"
y=$(eval "$x")
echo "$y"