私はまだ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