Bash 스크립팅 연습 도움말

Bash 스크립팅 연습 도움말

친애하는 커뮤니티 여러분, 이 작은 bash 기반 연습에 도움을 드리고 싶습니다. 연습을 해봤지만 완전히 맞는지는 잘 모르겠습니다. 개선 사항이나 가능한 버그를 제안해 주세요.

운동:

  1. 라는 디렉터리를 만들고 Exam해당 디렉터리를 입력합니다.
  2. Exam이라는 파일을 만듭니다 sc1.
  3. 파일을 열고 sc1"while 루프를 사용하여 디렉터리에 4개의 파일(ex1, ex2, ex3, ex4)을 만듭니다 /home/student/Desktop/. "라는 bash 스크립트를 작성합니다.
  4. 이 파일을 /home/student/Exam/디렉터리에 복사합니다.
  5. 파일을 실행할 수 있는 권한이 있는지 확인/확인하세요 ex1.
  6. 파일 이름을 바꾸고 ex2이름을 지정합니다 log.

답변:

  1. mkdir /home/student/Exam/+cd /home/student/Exam
  2. touch sc1
  3. vim sc1다음을 입력한 후 입력해야 합니다 .

    #!/bin/bash 
    while dir /home/student/Desktop/; do  
       touch "$dir/ex1"
       touch "$dir/ex2"
       touch "$dir/ex3"
       touch "$dir/ex4"
    done
    
  4. cp -a /home/student/Desktop/. /home/student/Exam/

  5. ls -l ex1(수정됨)
  6. mv ex2 log(수정됨)

답변1

  1. Exam이라는 디렉터리를 만들고 해당 디렉터리로 들어갑니다.

    mkdir Exam && cd Exam

  2. Exam 디렉터리에 sc1이라는 파일을 만듭니다.

    touch sc1

  3. sc1 파일을 열고 "while 루프를 사용하여 /home/student/Desktop/ 디렉터리에 4개의 파일(ex1, ex2, ex3, ex4)을 생성합니다."라는 bash 스크립트를 작성합니다.

    첫 번째 예 보기여기 라는 변수를 만들고 i1을 할당한 다음 루프를 시작하고 i5 이상이 되면 이 작업을 수행합니다(아래는 4까지를 의미함). 또는 -le 44 이하를 사용할 수 있습니다. 다음 이전의 마지막 i 값 반복에 1을 추가합니다.

i="1"

while [ $i -lt 5 ]
do
  touch "ex$i"
  i=$[$i+1] 
done
  1. 이 파일을 /home/student/Exam/ 디렉터리에 복사합니다.

    cp ex* /home/student/Exam/

  2. ex1 파일을 실행할 수 있는 권한이 있는지 확인/확인하세요.

    튜닝 확인 통과ls -l /home/student/Exam/ex1

    실행하여 수리 chmod 700 /home/student/Exam/ex1

  3. ex2 파일의 이름을 바꾸고 이름을 log로 지정합니다.

    mv /home/student/Exam/ex2 /home/student/Exam/log

답변2

i=1
while (( i <= 4 ))
do
   echo "ex$(( i++ ))"
done

이것이 내가 할 수 있는 "최고의" while 루프입니다. for 루프는 세 가지 표현식을 모두 사용할 수 있습니다.

for (( i = 1; i <= 4; i++ ))
do
   echo "ex$i"
done

또는 이와 같이 ((이중 괄호))를 완전히 피하십시오.

for i in 1 2 3 4
do
   echo "ex$i"
done

여기에 중간 해결책이 있습니다. "1에서 4까지"라고 말하는 것보다 "1,2,3,4"라고 말하는 것이 더 쉽습니다.

그러나 이는 touch "ex1"; touch "ex2"; touch "ex3" ...일반적으로 좋은 생각이 아닙니다. 특히 루프를 사용하라는 지시를 받은 경우에는 더욱 그렇습니다. 게으름도 중요하지만 프로그래머는 (한 번 이상) 복사하여 붙여넣는 것을 너무 자랑스러워해야 합니다.

for i in 1 2 3 4
do
   touch "/home/student/Desktop/ex$i"
done

이것은 완전한 순환이 되어야 합니다. 더 많거나 다른 숫자(또는 문자/문자열)가 필요한 경우 쉽게 변경할 수 있습니다.

이제 while 루프를 떠났으므로 가능한 가장 짧은 "루프"인 중괄호 확장을 추가하겠습니다.

touch /home/student/Desktop/ex{1,2,3,4}

또는

dir=/home/student/Desktop
touch $dir/ex{1..4}

Tell me master can you answer a question:
Is it the fingers or the brain that you're teaching a lesson? 
                                       (White Stripes)

관련 정보