24 개의 셸 스 크 립 트 면접 문제

5979 단어
중급 phoper 가 되 려 면 셸 스 크 립 트 를 파악 해 야 합 니 다. 작업 환경 에서 많은 임 무 를 자동 으로 수행 하 는 데 도움 이 됩 니 다.
다음은 면접 과정 에서 자주 만 나 는 셸 스 크 립 트 면접 문제 와 해답 입 니 다.
Q: 1 Shell 스 크 립 트 는 무엇 입 니까? 필요 한 것 입 니까?
답: 하나의 Shell 스 크 립 트 는 하나의 텍스트 파일 로 하나 이상 의 명령 을 포함 합 니 다.시스템 관리자 로 서 우 리 는 항상 여러 명령 을 사용 하여 작업 을 완성 해 야 합 니 다. 우 리 는 이 모든 명령 을 하나의 텍스트 파일 (Shell 스 크 립 트) 에 추가 하여 일상적인 작업 을 수행 할 수 있 습 니 다.
 
Q: 2 기본 로그 인 셸 이 무엇 인지 지정 한 사용자 의 로그 인 셸 을 어떻게 바 꿉 니까?
답: Linux 운영 체제 에서 "/bin/bash"는 기본 로그 인 셸 로 사용 자 를 만 들 때 분 배 됩 니 다.chsh 명령 을 사용 하면 기본 셸 을 변경 할 수 있 습 니 다.예 는 다음 과 같다.
# chsh  -s 
# chsh linuxtechi -s /bin/sh

Q: 3 셸 스 크 립 트 에서 어떤 종류의 변 수 를 사용 할 수 있 습 니까?
답: 셸 스 크 립 트 에서 우 리 는 두 가지 유형의 변 수 를 사용 할 수 있 습 니 다.
시스템 정의 변수
사용자 정의 변수
시스템 변 수 는 시스템 시스템 이 스스로 만 든 것 이다.이 변 수 는 보통 대문자 로 구성 되 어 있 으 며, "set"명령 을 통 해 볼 수 있 습 니 다.
사용자 변 수 는 시스템 사용자 에 의 해 생 성 되 고 정의 되 며 변수의 값 은 명령 "echo $"를 통 해 볼 수 있 습 니 다.
 
Q: 4 표준 출력 과 오류 출력 을 같은 위치 로 어떻게 바 꿉 니까?
답: 여기 에는 두 가지 방법 이 있다.
방법 1:
2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )

방법 2:
&> (如# ls /usr/share/doc &> out.txt )

 
Q: 5 셸 스 크 립 트 의 "if"문법 은 어떻게 끼 워 넣 습 니까?
답: 기초 문법 은 다음 과 같다.
if [ 条件 ]
then
命令1
命令2
…..
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi

Q: 6 셸 스 크 립 트 에서 "$?"표 시 된 용 도 는 무엇 입 니까?
답: 셸 스 크 립 트 를 쓸 때 이전 명령 이 실 행 됐 는 지 확인 하려 면 if 조건 에서 "$?"를 사용 하면 이전 명령 의 끝 상 태 를 확인 할 수 있 습 니 다.간단 한 예 는 다음 과 같다.
root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
0

종료 상태 가 0 이면 이전 명령 이 성공 적 으로 실행 되 었 음 을 설명 합 니 다.
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2

종료 상태 가 0 이 아니라면 명령 실행 에 실 패 했 음 을 설명 합 니 다.
 
Q: 7 셸 스 크 립 트 에서 어떻게 두 개의 숫자 를 비교 합 니까?
답: if - then 에서 테스트 명령 (- gt 등) 을 사용 하여 두 숫자 를 비교 합 니 다. 예 는 다음 과 같 습 니 다.
#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

 
Q: 8 셸 스 크 립 트 에서 break 명령 의 역할 은?
답: break 명령 의 간단 한 용 도 는 실행 중인 순환 을 종료 하 는 것 입 니 다.while 와 until 순환 에서 break 명령 을 사용 하여 순환 을 뛰 어 넘 을 수 있 습 니 다.
 
Q: 9 셸 스 크 립 트 에서 contine 명령 의 역할 은?
답: contine 명령 은 break 명령 과 달리 현재 순환 의 교체 만 뛰 어 넘 습 니 다. 전체 순환 이 아 닙 니 다.contine 명령 은 많은 경우 에 유용 합 니 다. 예 를 들 어 오류 가 발생 했 지만 우 리 는 여전히 큰 순환 을 계속 수행 하고 싶 을 때 입 니 다.
 
Q: 10 셸 스 크 립 트 에서 Case 문장의 문법 을 알려 주 시 겠 어 요?
답: 기초 문법 은 다음 과 같다.
case 变量 in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac

Q: 11 셸 스 크 립 트 에서 while 순환 문법 은?
답: for 순환 과 같이 while 순환 은 조건 이 성립 되면 명령 블록 을 반복 합 니 다.for 순환 과 달리 while 순환 은 조건 이 진실 되 지 않 을 때 까지 계속 반복 된다.기초 문법:
while [ 条件 ]
do
命令…
done

Q: 12 스 크 립 트 를 어떻게 실행 할 수 있 습 니까?
답: 스 크 립 트 를 실행 할 수 있 도록 chmod 명령 을 사용 합 니 다.예 는 다음 과 같다.
# chmod a+x myscript.sh

 
Q: 13 "\#!/bin/bash"의 역할 은?
답:\#!/빈/bash 는 셸 스 크 립 트 의 첫 줄 로 석방 (shebang) 줄 이 라 고 합 니 다.여기\# 기 호 는 hash 라 고 하 는데!뱅 이 라 고 합 니 다.명령 은/bin/bash 를 통 해 실행 된다 는 뜻 입 니 다.
 
Q: 14 셸 스 크 립 트 에서 for 순환 문법?
답: for 순환 의 기초 문법:
for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

Q: 15 셸 스 크 립 트 를 어떻게 디 버 깅 합 니까?
답: '- x' 인자 (sh - x my script. sh) 를 사용 하면 셸 스 크 립 트 를 디 버 깅 할 수 있 습 니 다.또 다른 방법 은 '- nv' 인자 (sh - nv myscript. sh) 를 사용 하 는 것 이다.
 
Q: 16 셸 스 크 립 트 는 문자열 을 어떻게 비교 합 니까?
답: test 명령 은 문자열 을 비교 할 수 있 습 니 다.테스트 명령 은 문자열 의 모든 문 자 를 비교 합 니 다.
 
Q: 17 Bourne shell (bash) 에는 어떤 특수 한 변수 가 있 습 니까?
답: 아래 표 는 Bourne 셸 이 명령 행 에 설정 한 특수 변 수 를 보 여 줍 니 다.
内建变量    解释
$0    命令行中的脚本名字
$1    第一个命令行参数
$2    第二个命令行参数
…..    …….
$9    第九个命令行参数
$#    命令行参数的数量
$*    所有命令行参数,以空格隔开

 
Q: 18 셸 스 크 립 트 에서 파일 을 어떻게 테스트 합 니까?
답: test 명령 은 파일 을 테스트 하 는 데 사용 할 수 있 습 니 다.기본 용법 은 다음 표 와 같다.
Test         用法
-d 文件名    如果文件存在并且是目录,返回true
-e 文件名    如果文件存在,返回true
-f 文件名    如果文件存在并且是普通文件,返回true
-r 文件名    如果文件存在并可读,返回true
-s 文件名    如果文件存在并且不为空,返回true
-w 文件名    如果文件存在并可写,返回true
-x 文件名    如果文件存在并可执行,返回true

 
Q: 19 셸 스 크 립 트 에 주석 을 어떻게 쓰 나 요?
답: 설명 은 스 크 립 트 가 무엇 을 할 수 있 는 지, 그것 이 어떻게 일 하 는 지 설명 할 수 있 습 니 다.각 줄 의 주석 은\# 로 시작한다.예 는 다음 과 같다.
#!/bin/bash
# This is a command
echo “I am logged in as $USER”

 
Q: 20 어떻게 셸 이 스 크 립 트 에 대해 터미널 에서 입력 하 게 합 니까?
답: read 명령 은 터미널 (키보드 사용) 에서 온 데 이 터 를 읽 을 수 있 습 니 다.read 명령 은 사용자 의 입력 을 받 아 변수 에 병 치 됩 니 다.예 는 다음 과 같다.
# vi /tmp/test.sh
#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”
# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi

 
Q: 21 변 수 를 취소 하거나 변 수 를 취소 하 는 방법 은 무엇 입 니까?
답: "unset"명령 은 변 수 를 취소 하거나 변 수 를 취소 하 는 데 사 용 됩 니 다.문법 은 다음 과 같다.
# unset 

 
Q: 22 산술 연산 은 어떻게 실행 합 니까?
답: 산술 연산 을 수행 하 는 두 가지 방법 이 있 습 니 다.
1. expr 명령 사용
# expr 5 + 2

2. 달러 기호 와 괄호 ($[표현 식]) 를 사용 합 니 다. 예 를 들 어:
test=$[16 + 4] ; test=$[16 + 4]

Q: 23 do - while 문장의 기본 형식 은?
답: do - while 문 구 는 while 구문 과 유사 하지만 조건 문 구 를 검사 하기 전에 명령 을 먼저 실행 합 니 다 (LCTT 번역 주: 적어도 한 번 은 실행 한 다 는 뜻).다음은 do - while 문 구 를 사용 한 문법 입 니 다.
do
{
命令
} while (条件)

 
Q: 24 셸 스 크 립 트 에서 함 수 를 어떻게 정의 합 니까?
답: 함 수 는 이름 이 있 는 코드 블록 입 니 다.코드 블록 을 정의 하면 스 크 립 트 에서 함수 이름 을 호출 할 수 있 습 니 다. 이 블록 은 실 행 됩 니 다.예 는 다음 과 같다.
$ diskusage () { df -h ; }
译注:下面是我给的shell函数语法,原文没有
[ function ] 函数名 [()]
{
命令;
[return int;]
}


推荐阅读:
PHP 高级面试115题汇总(含答案)
2019年PHP面试题附答案(实战经验)
PHP经典面试题:如何保证缓存与数据库的双写一致性?
PHP 面试踩过的坑
PHP中高级面试题 一个高频面试题:怎么保证缓存与数据库的双写一致性?
PHP 面试官问:你说说Redis的几个过期策略?




좋은 웹페이지 즐겨찾기