![ls -l /somedir과 같은 명령을 처리하는 쉘 스크립트를 작성하는 방법](https://linux55.com/image/77252/ls%20-l%20%2Fsomedir%EA%B3%BC%20%EA%B0%99%EC%9D%80%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
지금까지 내 스크립트는 ls
명령을 처리하고 디렉터리의 파일을 반환할 수 있습니다. 이제 ls -l /tmp
.
지금까지 내 스크립트는 다음과 같습니다.
#!/bin/bash
#set -x
clear
read -p "type a command: " file
read -r -a prog <<<"$file"
IFS=: read -r -a paths <<<"$PATH"
for val in "${prog[@]}" ; do
for path in "${paths[@]}"; do
[[ -x $path/$val ]] && "$path/$val" "$@"
done
done
답변1
어쩌면 다음과 같은 것일 수도 있습니다.
#!/usr/bin/env bash
clear
IFS=: read -r -a paths <<<"$PATH"
read -p "type a command: " cmd
read -d ' ' file <<<"$cmd" #the first component of command
for path in "${paths[@]}"; do
[ -x "$path/$file" ] && eval "$path/$cmd"
done
이는 기본적으로 가능한 모든 경로에 대해 실행 입력 명령을 구문 분석합니다.