디렉토리를 추가하는 간단한 스크립트

디렉토리를 추가하는 간단한 스크립트

/media/user 디렉토리를 모니터링하는 스크립트를 생성하려고 합니다. 새 USB가 연결되면 스크립트가 실행되고 현재 새 USB 드라이브를 사용하는 프로그램에 새 디렉터리가 추가됩니다.

예를 들어:

for D in ls -l /media/user
do
    directory add -d D
done

현재 스크립트는 특정 디렉터리 이름이 아닌 문자 그대로 /media/user/D디렉터리가 있는 횟수만큼 디렉터리를 추가합니다./media/user/media/user/D

이 명령은 directory add -d내가 추가하려는 디렉토리 /media/user/drive1등을 추가합니다./media/user/drive2

고마워요, 저는 분명히 새로운 사람이에요!

답변1

이것은 매우 기본적인 bash 내용입니다. 스크립트를 살펴보겠습니다.

for D in ls /l /media/user
do

변수 D를 사용하여 반복되는 for 루프를 만듭니다.

  • ls
  • /l
  • /media/user

따라서 3번 실행됩니다.

    directory add -d D

나는 그 프로그램이 무엇을 directory하도록 되어 있는지 모른다. 그러나 동일한 매개변수를 사용하여 정확히 동일한 방식으로 3번 실행됩니다.

  • add
  • -d
  • D
done

for 루프가 종료됩니다.

이것은 정확히 설명하는 동작이 아닙니다. 항상 정확히 3번 추가됩니다 D.

이제 개선이 필요합니다.

정확히 3번 실행하고 싶지는 않지만 정확히 3번 실행하고 싶으므로 을 /media/user사용하는 것이 확실한 선택입니다 . 이제 $(ls -l /media/user)프로그램 이 매개변수로 directory어떤 형식을 기대하는지 알 수 없지만 그렇지 않은 경우

-rw-r--r-- 1 ljm users   27164672 Jun 19 00:30 mikrotik-6.47.10.iso

그렇다면 아마도 그 옵션을 원하지 않을 것입니다 -l. 또한 구문 분석된 출력은 ls일반적으로 나쁜 생각입니다. 그래서 당신이 찾고 있는 것은

for D in /media/user/* 
do

다음으로 directory프로그램 ID를 지정하세요. 항상 D마지막 인수로 호출됩니다. 가치가 아니라 D, 즉 $D. 이는 당신이 원할 수도 있음을 의미합니다

directory add -d $D

그러나 디렉터리 이름에 공백이 포함되어 있으면 디렉터리 이름이 두 개의 인수로 분할됩니다. 따라서 다음을 인용해야 합니다.

directory add -d "$D"

이것이 당신을 올바른 길로 더 잘 이끌기를 바랍니다.

답변2

  1. ls스크립트에서는 사용 하지 마세요 .

  2. 디렉터리 명령은 없지만 mkdir디렉터리가 생성됩니다. "man" 페이지를 읽을 수 있습니다.

따라서 첫 번째 줄을for D in /media/user/*

관련 정보