여러 명령을 함수에 대한 인수로 호출하려면 어떻게해야합니까?

스냅 슈

Ctrl-C를 사용하여 수동으로 종료 할 때까지 여러 명령을 실행할 수있는 "영구"함수를 작성하고 싶습니다. 기본적으로 zsh 명령 줄에서이 작업을 수행 할 수 있으며 제대로 작동합니다.

$ while {} { ls ; sleep 1 }

반복되는 전화 lssleep 1, 영원히.

그런 것을 함수로 바꾸는 구문을 알아낼 수 없습니다. 다음과 같은 것 :

forever() { while {} { "${@}" } }

그런 다음 다음과 같이 호출하고 싶습니다.

$ forever ( ls ; sleep 1 )

아마 바보 같다 때 while {} {<commands>}forever {<commands>}거의 매우 차이가 없습니다. 하지만 최종 목표로서 제가 정말로 원하는 것은 "영원히 잠자기"기능입니다.

$ forever-sleep 5 ls -l
$ forever-sleep 5 ( ls -l a ; ls -l b )

그리고 $1명령을 실행 한 후 몇 초 후에 영원히 잠을 자게 됩니다 (Ctrl-C로 수동으로 죽일 때까지).

(나는 조합을 많이하고 중첩을 시도했습니다 (), (()), {}, [], [[]], "", '', 등, 난 그냥 기능과 구문 오류, 구문 분석 errrors 등을하지 않는 명령 줄을 모두 활용하는 방법을 알아낼 수 없습니다를 )

그래서,

  • 이 "영원한"아이디어와 비슷한 것이 이미 있습니까?
  • 함수에서 가능합니까? ( .zshrc별도의 실행 가능한 쉘 스크립트를 사용하는 것보다 내가 넣을 수있는 함수를 선호합니다 .)
mpy

거의 완료되었습니다.

forever-sleep() {
   if [[ ! $1 -gt 0 ]]; then
     print "Usage $0 [time in sec] command -parameter"
     return 2
   fi
   local time=$1
   shift 1
   while true; do
      eval "$@"
      print -- "### finished: $(date) ###############################################"
      sleep $time
   done
}

구문은 다음 forever-sleep [time in sec] command -parameters과 같습니다.

$ forever-sleep 2 date +%s
1373873888
1373873890
1373873892
1373873894
...

몇 가지 언급 :

  • $1 -gt 0첫 번째 매개 변수가을 평가하여 수치 적으로 표시되는 경우 기초적인 검사를 구현합니다 $1 > 0. 부정적인 대기 시간은 합리적이지 않은 것 같습니다.
  • 을 사용 while true; do ... done했지만 while {} {...}구문도 작동합니다.
  • shift 1함수의 첫 번째 인수를 버리는 데 사용됩니다 (에 저장되어 $time나중에 "$@"편의를 위해 변수를 사용할 수 있음).
  • eval "$@"단순한 것과는 대조적으로 다음 "$@"과 같은 고급 작업을 수행 할 수 있습니다.

    forever-sleep 2 'foo=$(date); echo $foo'
    

    후자의 명령에서 작은 따옴표를 확인하십시오!

  • 인쇄 호출은 시각적 구분자를 제공합니다. ;)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaScript에서 정규식을 사용하여 함수 호출에 대한 문자열을 테스트하려면 어떻게해야합니까?

분류에서Dev

람다를 호출 할 수있는 Cloudwatch 로그 권한을 부여하려면 어떻게해야합니까?

분류에서Dev

if 문을 사용하여 함수를 호출 한 다음 if 문 안에 반환 된 값을 인쇄하려면 어떻게해야합니까?

분류에서Dev

Python : 동일한 함수에 대해 다른 변수를 사용하여 여러 플롯을 생성하려면 어떻게해야합니까?

분류에서Dev

작업 목록을 저장하고 함수 호출을 통해 이러한 작업을 true 또는 false로 설정하려면 어떻게해야합니까?

분류에서Dev

두 번째 인수 (함수)에 대한 Zsh 자동 완성 규칙을 기존 명령의 규칙으로 설정하려면 어떻게해야합니까?

분류에서Dev

여러 인수와 복잡한 파일 경로 (공백 및 기호)를 사용하여 명령 줄 인수를 올바르게 전달하도록 perl을 얻으려면 어떻게해야합니까?

분류에서Dev

함수에 대한 인수로 목록을 "확장"하려면 어떻게해야합니까?

분류에서Dev

이름 바꾸기 명령을 사용하여 이러한 파일 이름을 수정하려면 어떻게해야합니까?

분류에서Dev

다른 명령을 동일한 인수로 실행하려면 어떻게해야합니까?

분류에서Dev

스크립트를 사용하여 아카이브를 다운로드하고 추출하려면 어떻게해야합니까 (후속 명령에 다운로드 한 파일을 안정적으로 지정하려면 어떻게해야합니까)?

분류에서Dev

여러 열에 대해 요인별로 중앙값을 계산하려면 어떻게해야합니까?

분류에서Dev

호출되는 경우 여러 다른 작업을 타는 대신 작업을 수행하려면 어떻게해야합니까?

분류에서Dev

PowerShell에서 한 줄에 여러 명령을 실행하려면 어떻게해야합니까?

분류에서Dev

Windows에서 명령 줄에서 여러 파일 형식을 인쇄하려면 어떻게해야합니까?

분류에서Dev

명령 줄에서 여러 odt 파일을 인쇄하려면 어떻게해야합니까?

분류에서Dev

한 줄 명령 (Linux / Unix)으로 동시에 여러 파일을 구문 분석하려면 어떻게해야합니까?

분류에서Dev

여러 변수에 대한 메서드를 효율적으로 호출하려면 어떻게해야합니까?

분류에서Dev

여러 시작 매개 변수로 cmd를 열려면 어떻게해야합니까 (시작할 때 두 개의 명령을 실행한다는 의미)?

분류에서Dev

루프를 사용하여 동일한 비동기 함수를 여러 번 (동 기적으로) 호출하려면 어떻게해야합니까?

분류에서Dev

특정 패턴에 대해 문자열을 여러 번 확인하려면 어떻게해야합니까?

분류에서Dev

`into ()`에 여러 호출을 연결하려면 어떻게해야합니까?

분류에서Dev

한 열에 여러 열을 병합하고 '-'로 구분하려면 어떻게해야합니까?

분류에서Dev

Mac 터미널에서 한 폴더의 여러 파일에 대해 한 번에 명령을 실행하려면 어떻게해야합니까?

분류에서Dev

아내에게 로그인, 비밀번호 등에 대한 긴급 액세스 권한을 부여하려면 어떻게해야합니까?

분류에서Dev

Excel에서 여러 중첩 된 대체 함수를 결합하려면 어떻게해야합니까?

분류에서Dev

여러 줄을 인쇄하는 대신 한 줄을 업데이트하도록 명령 줄 유틸리티를 얻으려면 어떻게해야합니까?

분류에서Dev

C ++ / C를 사용하여 Windows 명령 줄에서 한 번에 여러 명령을 실행하려면 어떻게해야합니까?

분류에서Dev

문자열을 매개 변수로 사용하여 Go에서 Rust 함수를 호출하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    JavaScript에서 정규식을 사용하여 함수 호출에 대한 문자열을 테스트하려면 어떻게해야합니까?

  2. 2

    람다를 호출 할 수있는 Cloudwatch 로그 권한을 부여하려면 어떻게해야합니까?

  3. 3

    if 문을 사용하여 함수를 호출 한 다음 if 문 안에 반환 된 값을 인쇄하려면 어떻게해야합니까?

  4. 4

    Python : 동일한 함수에 대해 다른 변수를 사용하여 여러 플롯을 생성하려면 어떻게해야합니까?

  5. 5

    작업 목록을 저장하고 함수 호출을 통해 이러한 작업을 true 또는 false로 설정하려면 어떻게해야합니까?

  6. 6

    두 번째 인수 (함수)에 대한 Zsh 자동 완성 규칙을 기존 명령의 규칙으로 설정하려면 어떻게해야합니까?

  7. 7

    여러 인수와 복잡한 파일 경로 (공백 및 기호)를 사용하여 명령 줄 인수를 올바르게 전달하도록 perl을 얻으려면 어떻게해야합니까?

  8. 8

    함수에 대한 인수로 목록을 "확장"하려면 어떻게해야합니까?

  9. 9

    이름 바꾸기 명령을 사용하여 이러한 파일 이름을 수정하려면 어떻게해야합니까?

  10. 10

    다른 명령을 동일한 인수로 실행하려면 어떻게해야합니까?

  11. 11

    스크립트를 사용하여 아카이브를 다운로드하고 추출하려면 어떻게해야합니까 (후속 명령에 다운로드 한 파일을 안정적으로 지정하려면 어떻게해야합니까)?

  12. 12

    여러 열에 대해 요인별로 중앙값을 계산하려면 어떻게해야합니까?

  13. 13

    호출되는 경우 여러 다른 작업을 타는 대신 작업을 수행하려면 어떻게해야합니까?

  14. 14

    PowerShell에서 한 줄에 여러 명령을 실행하려면 어떻게해야합니까?

  15. 15

    Windows에서 명령 줄에서 여러 파일 형식을 인쇄하려면 어떻게해야합니까?

  16. 16

    명령 줄에서 여러 odt 파일을 인쇄하려면 어떻게해야합니까?

  17. 17

    한 줄 명령 (Linux / Unix)으로 동시에 여러 파일을 구문 분석하려면 어떻게해야합니까?

  18. 18

    여러 변수에 대한 메서드를 효율적으로 호출하려면 어떻게해야합니까?

  19. 19

    여러 시작 매개 변수로 cmd를 열려면 어떻게해야합니까 (시작할 때 두 개의 명령을 실행한다는 의미)?

  20. 20

    루프를 사용하여 동일한 비동기 함수를 여러 번 (동 기적으로) 호출하려면 어떻게해야합니까?

  21. 21

    특정 패턴에 대해 문자열을 여러 번 확인하려면 어떻게해야합니까?

  22. 22

    `into ()`에 여러 호출을 연결하려면 어떻게해야합니까?

  23. 23

    한 열에 여러 열을 병합하고 '-'로 구분하려면 어떻게해야합니까?

  24. 24

    Mac 터미널에서 한 폴더의 여러 파일에 대해 한 번에 명령을 실행하려면 어떻게해야합니까?

  25. 25

    아내에게 로그인, 비밀번호 등에 대한 긴급 액세스 권한을 부여하려면 어떻게해야합니까?

  26. 26

    Excel에서 여러 중첩 된 대체 함수를 결합하려면 어떻게해야합니까?

  27. 27

    여러 줄을 인쇄하는 대신 한 줄을 업데이트하도록 명령 줄 유틸리티를 얻으려면 어떻게해야합니까?

  28. 28

    C ++ / C를 사용하여 Windows 명령 줄에서 한 번에 여러 명령을 실행하려면 어떻게해야합니까?

  29. 29

    문자열을 매개 변수로 사용하여 Go에서 Rust 함수를 호출하려면 어떻게해야합니까?

뜨겁다태그

보관