如何使用重定向和管道创建一个bash字符串命令?

San*_*hoi 3 linux bash shell pipe io-redirection

我想用重定向和/或管道创建一个bash字符串命令,并使用它来显示命令字符串或执行命令字符串.没有重定向或管道的简单命令可以工作,但是带有重定向或管道的一串命令不能.例如,

command="echo 1"
$command
echo "$command"
Run Code Online (Sandbox Code Playgroud)

会显示

1
echo 1
Run Code Online (Sandbox Code Playgroud)

然而,

command="echo 1 | cat"
$command
echo "$command"
Run Code Online (Sandbox Code Playgroud)

会显示

1 | cat
echo 1 | cat
Run Code Online (Sandbox Code Playgroud)

但我想要

1
echo 1 | cat
Run Code Online (Sandbox Code Playgroud)

同样对于重定向,

command="echo 1 | cat > 1.out"
$command
echo "$command"
Run Code Online (Sandbox Code Playgroud)

会显示

1 | cat > 1.out
echo 1 | cat > 1.out
Run Code Online (Sandbox Code Playgroud)

但我想要

echo 1 | cat > 1.out
Run Code Online (Sandbox Code Playgroud)

使用名为"1.out"的新文件,其中包含内容1.

有没有办法实现我想要的?

Wil*_*ell 5

如果您希望shell将字符串计算为命令,请告诉它:

eval "$command"
echo "$command"
Run Code Online (Sandbox Code Playgroud)