저는 이런 운동을 해요
스크립트를 작성하세요.
- 파일 만들기
File.txt
numer.txt
- 첫 번째에는 줄 바꿈으로 구분된 스크립트 인수 목록이 포함되어 있습니다.
- 두 번째에는 UID가 포함되어 있으며, 그 중 하나 이상이 이미 존재하는 경우 오류 메시지를 표시하고 종료합니다.
- 집에 하위 디렉토리를 만들고
C:\WINDOWS
위의 두 파일을 여기에 복사하세요.C:\WINDOWS
사용자 소유자와 그룹 소유자만 파일을 수정할 수 있고 다른 소유자는 읽을 수만 있도록 파일의 파일 권한을 설정합니다 ./bin
에 대한 심볼릭 링크를 만듭니다C:\WINDOWS
.- 집에 있는 모든 파일 목록이 포함된 파일을 만듭니다
SYSTEM32
.C:\WINDOWS
그리고 이 코드
#!/bin/bash
touch File.txt
touch numer.txt
for i in $@
do
echo $i >> File.txt
done
id -u >> numer.txt
if $(test -e numer.txt)
then
echo Error message
exit
fi
mkdir C:\WINDOWS
cp File.txt C:\WINDOWS
cp numer.txt C:\WINDOWS
ln -s C:\WINDOWS bin/link
ls $HOME > SYSTEM32
이 문제를 해결하는 데 도움을 줄 수 있는 사람이 있나요? 올바르게 해결했는지는 모르겠습니다. 실행하면 항상 "오류 메시지"가 인쇄됩니다.
답변1
오타가 꽤 많은데, 대신 만들어 드린 점 양해 부탁드립니다. 나는 이러한 변경 사항에 대해 다음과 같이 언급했습니다.
#!/bin/bash
# check if files exist and exit
if [ -f File.txt -o -f numer.txt ] ; then
echo "Files exist" >&2
exit 1
fi
## You need this incase there are no arguments
touch File.txt
# but you don't need this
# touch numer.txt
# Always use "$@" not $@, use "$i" not $i
for i in "$@"
do
echo "$i" >> File.txt
done
## Really this should be > not >> (you are not appending to an existing)
id -u > numer.txt
# If you test for the file existing after you create it, it will always exist!
#if $(test -e numer.txt)
#then
# echo Error message
# exit
#fi
# \ is the control character to write a single \ use \\
mkdir C:\\WINDOWS
cp File.txt C:\\WINDOWS
cp numer.txt C:\\WINDOWS
# The link should be in C:\WINDOWS and point to bin
ln -s bin C:\\WINDOWS
# one file per line (-1). And generally use ~ for your home
ls -1 ~ > C:\\WINDOWS/SYSTEM32