에서 마지막 위치 매개 변수를 가져 /bin/dash
오려고 시도했지만 시도했습니다 echo ${$#}
. 놀랍게도 이로 인해 오류가 발생하지 않았지만 $$
가변 내용 과 동일한 PID에 오류가 발생했습니다 . 질문, 왜 그 구문이 효과가 있었습니까? 여기서 쉘이 적용한 구문 규칙은 무엇입니까?
기본적으로 내가 한 일은
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
분명히, %
그런 구조에서 캐릭터도 무시됩니다.
$ echo ${$%}
13819
그러나 *
및 @
나쁜 대체 오류가 발생합니다 :
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
@Kusalananda 기대치가 없습니다. 나는 옆에 다른 캐릭터
—
Sergiy Kolodyazhnyy
#
와 %
그 결과로 어떤 행동 을 시도 하고 있었습니까?
@wjandrea Yep, 이미 알고 있습니다. : 거기에 대한 질문은 이미 사실이다 stackoverflow.com/questions/1853946/... 먼저 질문을 읽지 않고 나 자신에 의해 방법을 찾기 위해 노력했다 (난 이미 알고있는
—
Sergiy Kolodyazhnyy
for i; do true; done
마지막 항목에를 얻기 위해 $i
)하지만, 더 우아한 뭔가를 찾고 있었다. eval
물론 어느 정도까지 생각할 수있는 잠재적 문제가있을 수 있습니다. 그것은 또 다른 주제입니다. 그러나 예, 옵션입니다
${$*}
하고${$@}
생산합니까?