我可以使用 echo 来使用此方法运行其他命令吗?

我可以使用 echo 来使用此方法运行其他命令吗?

我仍在学习 unix,我需要知道是否有办法执行以下操作。

有什么方法可以回显读取的变量,并在此过程中逐个字母地剖析它,并为每个字母分配特定的命令?例如,如果常规回显输出为“cat”,我将如何使 c、a 和 t 执行不同的命令?这可能吗?

我尝试过使用折叠将字母分成自己的行的各种方法。我只需要一种方法使字母等于命令。

它几乎看起来像这样:

read variable
echo $variable | fold -w 1

我走在正确的轨道上吗?

答案1

在 bash 4 中,您可以在关联数组中定义字母/命令映射并循环遍历所有字母,如下所示:

#!/bin/bash

# List of commands
declare -A cmd=(
    ['c']="cmd1" 
    ['a']="cmd2" 
    ['t']="cmd3"
)

# Split entry into letters and execute assigned commands
read variable
for f in `echo $variable | fold -w 1`; do
    ${cmd[$f]}
done

相关内容