if/elif 문이 많이 포함된 bash 스크립트가 있습니다.
명령의 출력을 가져와 명령의 기본 버전 대신 관련 if/elif 문을 실행하도록 하는 방법이 있습니까?
예를 들어 기본 스크립트에는 다음이 있습니다.
if [ "$command" == "ls" ]
then
ls -la
elif # ...(hundreds more if/elif statements here) ...
fi
내가 실행하는 경우:
echo "ls" >> tempcommand; bash tempcommand
ls
내 스크립트에서는 위의 기본 스크립트에 지정된 if 문을 통해 이 실행 명령을 파이프할 수 있습니까 ?
답변1
나는 당신과 동일한 사용 사례를 가지고 있습니다.
내 ls
구현:
$ cat ~/bin/ls
#!/bin/bash
LD_LIBRARY_PATH=/path/sid-chroot/usr /path/sid-chroot/bin/ls "$@"
$ ls --version
ls (GNU coreutils) 9.1
$ /bin/ls --version
ls (GNU coreutils) 8.32
별칭이 있습니다.
$ type ls
ls is aliased to `ls --color=auto -F'
모든 것이 예상대로 작동합니다.
ls
PATH
이전 구현을 환경 변수 에 넣어야 합니다 .
따라서 귀하의 경우 디렉터리와 정의를 tempcommand
변수에 추가해야 합니다. 아마도 가장 간단한 방법은 다음을 추가하는 것입니다.PATH
ls
alias
. ~/.bashrc
당신의 스크립트에.