![echo를 사용하여 이 방법으로 다른 명령을 실행할 수 있습니까? [폐쇄]](https://linux55.com/image/86883/echo%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%B4%20%EB%B0%A9%EB%B2%95%EC%9C%BC%EB%A1%9C%20%EB%8B%A4%EB%A5%B8%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
저는 아직 유닉스를 배우고 있는데 다음을 수행할 수 있는 방법이 있는지 알고 싶습니다.
내가 읽은 변수를 에코하고 그 과정에서 문자별로 분석하여 각 문자에 특정 명령을 할당할 수 있는 방법이 있습니까? 예를 들어 일반 에코 출력이 "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