/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
ls
스크립트에서는 사용 하지 마세요 .디렉터리 명령은 없지만
mkdir
디렉터리가 생성됩니다. "man" 페이지를 읽을 수 있습니다.
따라서 첫 번째 줄을for D in /media/user/*