echo를 사용하여 각 명령 매개변수를 어떻게 인쇄합니까? [복사]

echo를 사용하여 각 명령 매개변수를 어떻게 인쇄합니까? [복사]

~에 따르면이 답변...

명령은 매개변수라는 문자열 배열로 분할됩니다. 매개변수 0은 (일반적으로) 명령 이름이고, 매개변수 1은 명령 다음의 첫 번째 요소입니다.

$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

각 매개변수를 출력할 수 있나요? 에코를 사용하여 표현해 보겠습니다.

명령을 실행한 후 및를 사용했지만 echo $@실제로 작동하지 않습니다.echo $0 $1 $2 $3ls -la /tmp /var/tmp

나도 이것을 시도했지만 > /dev/null작동하지 않았습니다. (아래와 똑같은 결과가 나옵니다)

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $@

user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $0
bash
user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $1

user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $0 $1 $2 $3
bash
user@linux:~$ 

원하는 출력

실행 후 터미널 화면에 다음 출력이 표시될 것으로 예상됩니다.ls -la /tmp /var/tmp

입력하다

ls -la /tmp /var/tmp

산출

arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

답변1

echo $0은 귀하의 예에서 "bash"를 출력합니다. 쉘에 있을 때 bash가 실행 중이기 때문에 이는 사실입니다.

액세스하려는 매개변수가 명령에 제공되었습니다 ls. 반환되고 프롬프트가 나타나면 매개변수가 사라진 것입니다.

다음 줄을 포함하는 파일("스크립트")을 만든 후

echo $0 $1 $2

소싱을 통해 호출합니다.

. myecho.cmd a b c d 

...당신은 다음을 얻습니다:

bash a b

실행 가능하게 만든 후(경로 디렉터리에 #! 첫 번째 줄, chmod, cp 추가) 직접 호출할 수 있습니다.

myecho.cmd a b c d

이제 $0은 새 명령의 이름입니다.

/usr/local/bin/myecho.cmd a b 

(눈에 띄게 하기 위해 .cmd라고 불렀습니다. "에코"라고 부르지 마세요.)

관련 정보