Bash 在命令行进行解析可以工作,但在shell脚本中失败

Bash 在命令行进行解析可以工作,但在shell脚本中失败,bash,shell,scripting,Bash,Shell,Scripting,为什么要在命令行中执行此操作: redis-cli info | grep instantaneous_ops_per_sec | cut -d : -f 2 …但当我将其分配给shell脚本中的变量时,它不起作用?e、 g num=`redis-cli info` | grep instantaneous_ops_per_sec | cut -d : -f 2 与此相关的是,为什么将redis cli info的原始输出分配给一个shell变量,然后回显它会导致redis cli输出的乱码

为什么要在命令行中执行此操作:

redis-cli info | grep instantaneous_ops_per_sec | cut -d : -f 2
…但当我将其分配给shell脚本中的变量时,它不起作用?e、 g

num=`redis-cli info` | grep instantaneous_ops_per_sec | cut -d : -f 2

与此相关的是,为什么将
redis cli info
的原始输出分配给一个shell变量,然后回显它会导致redis cli输出的乱码版本?

当捕获到一个变量时,您应该将整个命令链放在子shell中,而不仅仅是开始部分:

num=$( redis-cli info | grep instantaneous_ops_per_sec | cut -d : -f 2 )

另外,最好使用
$()
而不是传统的反勾号。

我发誓我已经试过了。:/为什么“cat”——将一个文件放入shell变量,然后回显该文件会导致该文件的一个乱码版本?@rivenmyst137听起来像