셸 의 eval - command

4222 단어 command
본 고 는 일부 Liux 에서 명령 의 사용 과 기 교 를 설명 하고 초보 자 에 게 도움 을 주 기 를 바 랍 니 다.이 명령 은 스 캔 으로 기능 을 수행 할 수 없 는 변수 에 적용 된다.이 명령 은 변 수 를 두 번 스 캔 합 니 다.두 번 의 스 캔 이 필요 한 변 수 는 때때로 복잡 한 변수 라 고 불 린 다.그러나 이 변수 들 자 체 는 복잡 하지 않다.e v a l 명령 도 간단 한 변 수 를 표시 하 는 데 사용 할 수 있 습 니 다. 복잡 한 변 수 는 아 닙 니 다.1 eval 명령 은 간단 한 변 수 를 표시 하 는 데 도 사용 할 수 있 습 니 다. 복잡 한 변 수 는 아 닙 니 다. 예 를 들 어 [neau@mail ~]$ NAME=VALUEBANK[neau@mail ~]$ eval echo $NAMEVALUEBANK[neau@mail~] $echo $NAMEVALUEBANK 2 문자열 이 함 유 된 명령 을 실행 합 니 다. 우선 test 라 는 작은 파일 을 만 듭 니 다. 이 작은 파일 에 텍스트 가 포함 되 어 있 습 니 다.이 어 cat test 를 변수 my file 에 부여 합 니 다. 현재 우리 e c h o 이 변 수 는 상기 명령 을 실행 할 수 있 는 지 확인 합 니 다.[neau@mail ~]$ vi test[neau@mail ~]$ cat testHello World!!!I am a chinese Boy!cat testf 를 변수 my file 에 부여 합 니 다 [neau@mail~] $my file = "cat test"우리 e c h o 이 변 수 를 사용 하면 t e s t 파일 의 내용 을 표시 할 수 없습니다.[neau@mail~] $echo $my filecat test 는 e v a l 명령 을 시험 해 보 겠 습 니 다. e v a l 명령 이 이 변 수 를 두 번 훑 어 볼 것 이라는 것 을 기억 하 세 요.[neau@mail ~]$ eval $myfileHello World!!!I am a chinese Boy!위의 결 과 를 통 해 알 수 있 듯 이 e v a l 명령 을 사용 하면 이 변 수 를 바 꿀 수 있 을 뿐만 아니 라 해당 하 는 명령 도 수행 할 수 있다.첫 번 째 스 캔 은 변 수 를 바 꾸 었 고 두 번 째 스 캔 은 이 문자열 에 포 함 된 명령 cat test 를 실 행 했 습 니 다.3. 명령 은 스 크 립 트 에 전 달 된 마지막 인 자 를 표시 하 는 데 도 사용 할 수 있 습 니 다 [neau@mail ~]$ cat test1#!/bin/bashecho "Total of the arguments passed $#"echo "The process Id is $$"echo "Last argument os "$(eval echo\$$#)""[neau@mail~] $./test 1 value bank test last Total of the arguments passed 4The process Id is 21545 Last argument os last 위의 스 크 립 트 에서 e v a l 명령 은 먼저 $\# 현재 s h e l 의 매개 변수 개수 로 해석 합 니 다.그리고 두 번 째 스 캔 에서 마지막 인 자 를 얻 습 니 다.4. 각 값 에 변수 이름 을 주면 변수 이름 을 줄 수 있 습 니 다.다음은 제 가 이에 대해 설명 을 드 리 겠 습 니 다. test 2 라 는 파일 이 있다 고 가정 합 니 다. 이 파일 의 첫 번 째 열 은 변수 이름 이 되 고 두 번 째 열 은 이 변수의 값 이 되 기 를 바 랍 니 다. 그러면 [neau@mail ~]$ cat test2COMMANY TQLANGUE ENGLISHLIKE YES[neau@mail ~]$ cat test3#!/bin/bashwhile read NAME VALUEdoeval "${NAME}=${VALUE}"done  
#cat et

a 1

b 2

c 3

#cat ei

while read name value

do

eval "${name}=${value}"

done < et

echo "$a $b $c"

#. ei

1 2 3

 
Check if a program exists from a bash script 
먼저 설명 하고 자 하 는 것 은 which 를 사용 하여 판단 하지 말 아야 한 다 는 것 이다. 이 유 는 다음 과 같다. 1. which 비 SHELL 의 내장 명령 은 내장 명령 보다 비용 이 많이 들 고 비 내장 명령 은 플랫폼 의 실현 에 의존 하 며 서로 다른 플랫폼 의 실현 이 다 를 수 있다.2. 많은 시스템 의 which 는 종료 시의 반환 값 을 설정 하지 않 습 니 다. 찾 으 려 는 명령 이 존재 하지 않 더 라 도 which 는 03, 많은 시스템 의 which 를 되 돌려 줍 니 다. 모두 '외부 인도 적 이지 못 한' 일 을 몰래 했 기 때문에 which 를 사용 하지 마 십시오. 다음 방법 을 사용 할 수 있 습 니 다. $command - v foo >/dev/null 2 > & 1 | {echo > & 2 "I require foo but it 's not installed.  Aborting."; exit 1; }$ type foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }$ hash foo 2>/dev/null || { echo >&2 "I require foo but it's not installed.  Aborting. "; exit 1;} 날 카 로 운 원문 은 여기 서 볼 수 있 습 니 다.http://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-script/677212#677212

좋은 웹페이지 즐겨찾기