我仍在学习 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