bash:无法将变量设置为实心字符串

use*_*145 2 shell shell-script quoting

我无法使用整个命令字符串设置变量,如下所示:

A="/bin/ps wwwaux"

for a in $A
do
  echo "$a"
done
Run Code Online (Sandbox Code Playgroud)

它以某种方式分配数组而不是实心字符串。

我的环境:

GNU/Linux, GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

cha*_*aos 8

for 循环需要一个列表:

for a in $A; do
  echo "$a"
done
Run Code Online (Sandbox Code Playgroud)

扩展为:

for a in /bin/ps wwwaux; do
  echo "$a"
done
Run Code Online (Sandbox Code Playgroud)

一个接一个地打印。循环运行两次,因为有两个参数。输出将是:

/bin/ps
wwwaux
Run Code Online (Sandbox Code Playgroud)

改用引号:

for a in "$A"; do
  echo "$a"
done
Run Code Online (Sandbox Code Playgroud)

这将扩展为:

for a in "/bin/ps wwwaux"; do
  echo "$a"
done
Run Code Online (Sandbox Code Playgroud)

这将只循环一次,因为它是一个参数。这是输出:

/bin/ps wwwaux
Run Code Online (Sandbox Code Playgroud)


Joh*_*ohn 5

for f in "$A"
do
  echo $f
done
Run Code Online (Sandbox Code Playgroud)

您的作业已经在做您想做的事情——正是“for”循环以您不想要的方式破坏了它。