친애하는 커뮤니티 여러분, 이 작은 bash 기반 연습에 도움을 드리고 싶습니다. 연습을 해봤지만 완전히 맞는지는 잘 모르겠습니다. 개선 사항이나 가능한 버그를 제안해 주세요.
운동:
- 라는 디렉터리를 만들고
Exam
해당 디렉터리를 입력합니다. Exam
이라는 파일을 만듭니다sc1
.- 파일을 열고
sc1
"while 루프를 사용하여 디렉터리에 4개의 파일(ex1, ex2, ex3, ex4)을 만듭니다/home/student/Desktop/
. "라는 bash 스크립트를 작성합니다. - 이 파일을
/home/student/Exam/
디렉터리에 복사합니다. - 파일을 실행할 수 있는 권한이 있는지 확인/확인하세요
ex1
. - 파일 이름을 바꾸고
ex2
이름을 지정합니다log
.
답변:
mkdir /home/student/Exam/
+cd /home/student/Exam
touch sc1
vim sc1
다음을 입력한 후 입력해야 합니다 .#!/bin/bash while dir /home/student/Desktop/; do touch "$dir/ex1" touch "$dir/ex2" touch "$dir/ex3" touch "$dir/ex4" done
cp -a /home/student/Desktop/. /home/student/Exam/
ls -l ex1
(수정됨)mv ex2 log
(수정됨)
답변1
Exam이라는 디렉터리를 만들고 해당 디렉터리로 들어갑니다.
mkdir Exam && cd Exam
Exam 디렉터리에 sc1이라는 파일을 만듭니다.
touch sc1
sc1 파일을 열고 "while 루프를 사용하여 /home/student/Desktop/ 디렉터리에 4개의 파일(ex1, ex2, ex3, ex4)을 생성합니다."라는 bash 스크립트를 작성합니다.
첫 번째 예 보기여기 라는 변수를 만들고
i
1을 할당한 다음 루프를 시작하고i
5 이상이 되면 이 작업을 수행합니다(아래는 4까지를 의미함). 또는-le 4
4 이하를 사용할 수 있습니다. 다음 이전의 마지막 i 값 반복에 1을 추가합니다.
i="1"
while [ $i -lt 5 ]
do
touch "ex$i"
i=$[$i+1]
done
이 파일을 /home/student/Exam/ 디렉터리에 복사합니다.
cp ex* /home/student/Exam/
ex1 파일을 실행할 수 있는 권한이 있는지 확인/확인하세요.
튜닝 확인 통과
ls -l /home/student/Exam/ex1
실행하여 수리
chmod 700 /home/student/Exam/ex1
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)