bash 스크립트를 사용하여 배우려고 합니다.YouTube의 freeCodeCamp 초보자 튜토리얼.
그가 함수를 만드는 방법을 보여주는 부분에서 막혔습니다. 그는 변수에 대한 옵션과 함께 명령을 저장합니다.
#!/bin/bash
showuptime(){
up=$(uptime -p | cut -c4-)
since=$(uptime -s)
cat << EOF
----------
This machine has been up for ${up}
It has been running since ${since}
----------
EOF
}
showuptime
터미널에서 zsh를 사용하여 MacBook M1에 복사할 수 없습니다.
나는 사용 중이며 #!/bin/zsh
-p 및 -s 옵션을 전달하지 않는 경우에만 작동합니다.
실수:
uptime: illegal option -- p
usage: uptime
uptime: illegal option -- s
usage: uptime
답변1
몇 가지 사항을 명확히 하려면:
- 변수로~의등을 통해 액세스할 수 있는 함수에 전달된 인수(여기에는 없음)가 있는 함수를 표시하는 것이 좋습니다
$1
.$2
- 당신이 가진 모든 것은 변수입니다존재하다태그가 지정되지 않았기 때문에
local
해당 기능으로 제한되지도 않습니다. - 이
$( )
구조는명령 대체. 어떤 방식으로든 명령을 저장하지 않고 그 안에 있는 내용을 실행하고(uptime -p | cut -c4-
첫 번째 경우) 명령에 의해 생성된 출력을 변수에 할당합니다.uptime
이 시점에서 명령이 실행됩니다. 명령이 아닌 명령 출력이 저장됩니다. - Marcus가 언급했듯이 오류는
uptime
이러한 옵션을 지원하지 않는 명령에서 발생합니다. Mac OS는 BSD와 관련이 있기 때문에 FreeBSD는매뉴얼 페이지uptime
방향을 제시할 수 있습니다. FreeBSD에서는uptime
옵션이 전혀 허용되지 않으며 Mac OS에서도 마찬가지일 것입니다. - 질문 제목에 답하기: 옵션과 함께 명령을 저장하는 가장 좋은 방법은 배열을 사용하는 것입니다.
my_stored_command=(ls -lt --human-readable /home)
그런 다음 나중에 실행하여"${my_stored_command[@]}"
배열을 개별 요소로 확장하고 명령 호출을 다시 구성할 수 있습니다.