20150913 일 수업 숙제 (셸)
11091 단어 shell
셸 은 명령 언어 이자 프로 그래 밍 언어 이자 명령 해석 프로그램 이다.
셸 스 크 립 트 는 보통 \ #!"\ #! / bin / bash" 와 같은 시작 텍스트 파일 입 니 다. 이 줄 은 shebang 이 라 고 합 니 다. 이 스 크 립 트 셸 을 설명 하 는 경 로 를 지정 합 니 다. 스 크 립 트 를 실행 할 때 시스템 은 이 셸 을 호출 하여 이 스 크 립 트 를 실행 합 니 다.문자 \ # 주석 의 시작 을 표시 합 니 다.주석 부분 은 \ # 를 시작 으로 줄 끝까지 이 어 집 니 다. 주석 줄 은 코드 에 주석 정 보 를 제공 하거나 줄 코드 실행 을 중단 하 는 데 사 용 됩 니 다. 해석 기 는 무시 합 니 다.
셸 스 크 립 트 는 명령 을 한데 쌓 고 셸 은 문법 분석, 문법 분석, 의미 분석 을 통 해 스 크 립 트 의 명령 을 순서대로 선택 하거나 순환 적 으로 실행 합 니 다.스 크 립 트 실행 이 끝 났 습 니 다. 이 셸 프로 세 스 도 종 료 됩 니 다.
2. 셸 프로 그래 밍 에 관련 된 모든 지식 점 (예 를 들 어 변수, 문법, 명령 상태 등) 을 정리 하고 그림 을 가 져 가 야 합 니 다.
변수, 변수 연산 및 조건 테스트
조건 판단 문 if, case 및 read 명령
순환 문 for, while, until
함수, 데 드 순환, 모듈 화 프로 그래 밍
3. 과정 에서 말 한 모든 순환 문, 조건 판단 의 사용 방법 과 관련 된 예 를 정리한다.(if (jpg|png is not exist);echo ”You say a XX“)
순환 문 for, while, until
변수, 변수 연산 및 조건 테스트
4. 스 크 립 트 쓰기: 경로 가 존재 하지 않 으 면 디 렉 터 리 로 만 듭 니 다. 그렇지 않 으 면 존재 하 는 것 을 표시 하고 내용 형식 을 표시 합 니 다. (의심 하지 마 세 요. 이렇게 간단 합 니 다)
[root@BAIYU_110 ~]# cat test2.sh
#!/bin/bash
#
read -t 10 -p "Please input a file path: " path
if [ -z "$path" ];then
echo -e "
\033[31mError:\033[0mplease input a file path"
exit 1
elif [ ! -e "$path" ];then
mkdir -p $path $>/dev/null
echo "your input $path is not exist"
elif [ -f "$path" ];then
echo "$path is a general file"
echo -e "\033[31mThe $path:\033[0m"
cat $path
elif [ -d "$path" ];then
echo "$path is a directory"
echo -e "\033[31mThe $path:\033[0m"
ls $path
else echo "$path unknown type"
fi
:
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path: /etc/fstab
/etc/fstab is a general file
The /etc/fstab:
#
# /etc/fstab
# Created by anaconda on Thu Sep 10 19:38:37 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=46c42e9f-f101-4209-9590-afa295415eaf /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_data /data ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path: /tmp
/tmp is a directory
The /tmp:
ks-script-utpPS_ yum.log
ks-script-utpPS_.log yum_save_tx-2015-09-10-20-24RcJDyn.yumtx
shell yum_save_tx-2015-09-11-21-29ihcHuJ.yumtx
test2.sh yum_save_tx-2015-09-11-21-30ZOEQ7w.yumtx
test.sh yum_save_tx-2015-09-11-21-32anadvE.yumtx
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path: xx
your input xx is not exist
[root@BAIYU_110 ~]# ls
~ cc shell test3.sh xx
$ init.sh test1.sh test3.sh.orig
aa install.log test1.sh.orig test.sh
anaconda-ks.cfg install.log.syslog test2.sh test.sh.orig
bb qq test2.sh.orig trash.sh
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path: /dev/null
/dev/null unknown type
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path:
Error:please input a file path
[root@BAIYU_110 ~]# bash test2.sh
Please input a file path: aa bb cc
your input aa bb cc is not exist
5. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 완성 합 니 다. 주어진 두 개의 수치, 어느 것 이 크 고 어느 것 이 작은 지 판단 하 는 방법: 스 크 립 트 파라미터, 명령 상호작용 (read 를 사용 하면 여전히 간단 합 니 다)
[root@xxj shell]# cat 9.sh
#!/bin/bash
#
error(){
cat<<EOF
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
EOF
}
echo "$*"|grep '[[:alpha:]]' &>/dev/null && error && exit 1
if [ $# -gt 2 -o $# -le 1 ];then
error
exit 2
elif [ "$1" -gt "$2" ];then
echo -e "The max is $1
The min is $2"
elif [ "$1" -lt "$2" ];then
echo -e "The max is $2
The min is $1"
elif [ "$1" -eq "$2" ];then
echo "$1 and $2 as large as"
else error
fi
:
[root@xxj shell]# bash 9.sh
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
[root@xxj shell]# bash 9.sh a 1
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
[root@xxj shell]# bash 9.sh 1 a
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
[root@xxj shell]# bash 9.sh xy zx
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
[root@xxj shell]# bash 9.sh 12a 2b3
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |
| Instructions:num_compare.sh num1 num2 |
| Example:num_compare.sh 11 22 |
+--------------------------------------------------------+
[root@xxj shell]# bash 9.sh 12 34
The max is 34
The min is 12
6. 100 이내 의 모든 홀수 의 합 (적어도 3 가지 방법 을 사용 합 니 다. 예, 이것 은 우리 의 숙제 입 니 다 ^ ^)
(1)、[root@BAIYU_110 ~]# cat test4.sh
#!/bin/bash
#
y=0
for x in $(seq 1 2 100);do # for
y=$[$y+$x]
done
echo "The sum is $y"
[root@BAIYU_110 ~]# bash test4.sh
The sum is 2500
(2)、[root@BAIYU_110 ~]# cat test5.sh
#!/bin/bash
#
x=1
while [ "$x" -le 100 ];do # while
if [ $[$x%2] -eq 1 ];then
let y+=$x
fi
let x++
done
echo "The sum is $y"
[root@BAIYU_110 ~]# bash test5.sh
The sum is 2500
(3)、[root@BAIYU_110 ~]# cat test10.sh
#!/bin/bash
#
x=1
until [ $x -gt 100 ];do # until
if [ $[$x%2] -eq 1 ];then
let y+=$x
fi
let x++
done
echo "The sum is $y"
[root@BAIYU_110 ~]# bash test10.sh
The sum is 2500
7. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 수행 합 니 다.
(1) 스 크 립 트 에 두 텍스트 파일 경 로 를 전달 합 니 다.
(2) 두 파일 중 공백 줄 수가 많은 파일 과 공백 줄 의 개 수 를 표시 합 니 다.
(3) 두 파일 중 총 줄 수가 많은 파일 과 총 줄 수 를 표시 합 니 다.
[root@BAIYU_110 ~]# cat test7.sh
#!/bin/bash
#
read -t 10 -p "Please enter two file path: " file1 file2 # , 10S , ENTER
spaceline1=$(grep "^$" $file1|wc -l)
spaceline2=$(grep "^$" $file2|wc -l)
line1=$(cat $file1|wc -l)
line2=$(cat $file2|wc -l)
###############################################################
compare(){ # 2 3 , , 2 ,
if [ $a -gt $b ];then
echo -e " max $file1
$file1 :$a"
elif [ $a -lt $b ];then
echo -e "max $file2
$file2 :$b"
elif [ $a -eq $b ];then
echo -e "$file1 and $file2 as large as
space line is $a"
else echo "Error please enter two file path!"
fi
}
##############################################################
a=$spaceline1
b=$spaceline2
echo "The space_line:"
compare
echo
a=$line1
b=$line2
echo "The line:"
compare
:
[root@BAIYU_110 ~]# bash test7.sh
Please enter two file path: /root/aa /root/bb
The space_line:
max /root/aa
/root/aa :2
The line:
max /root/bb
/root/bb :11
[root@BAIYU_110 ~]# cat aa
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa
[root@BAIYU_110 ~]# cat bb
bbbbbbbbbbbb
bbbbbbbbb
a
b
c
ccc
cccc
d
d
c
8. 스 크 립 트 작성
(1) 사용자 에 게 문자열 을 입력 하 라 고 알려 줍 니 다.
(2) 판단:
quit 를 입력 하면 스 크 립 트 를 종료 합 니 다.
그렇지 않 으 면 (사용자 의 입력 을 계속 기다 리 고) 입력 한 문자열 의 내용 을 표시 합 니 다.
[root@BAIYU_110 ~]# cat test8.sh
#!/bin/bash
#
read -t 10 -p "Please enter string: " var
case $var in
quit)
exit 1
;;
*)
echo "$var"
;;
esac
:
[root@BAIYU_110 ~]# bash test8.sh
Please enter string:
[root@BAIYU_110 ~]# bash test8.sh
Please enter string: nihaodaf
nihaodaf
[root@BAIYU_110 ~]# bash test8.sh
Please enter string: quit
2、
[root@xxj shell]# cat 7.sh
#!/bin/bash
#
while true;do
read -p "Please enter string: " str
[ $str == quit ]&&break
echo $str
done
:
[root@xxj shell]# bash 7.sh
Please enter string: nihao
nihao
Please enter string: sb
sb
Please enter string: quit
9. 스 크 립 트 를 작성 하고 2 ^ n 표를 인쇄 합 니 다. n 은 사용자 가 입력 한 값 과 같 습 니 다. (죄송합니다. 장 난 스 럽 습 니 다)
[root@xxj shell]# cat 33.sh
#!/bin/bash
#
read -t 5 -p "please enter a number: " x
[ -z $x ]&&echo "Errot:please enter a number!"
count=2
for i in $(seq 0 $x);do
if [ $i -eq 0 ];then
echo -e "1"
elif [ $i -eq 1 ];then
echo -e "2"
elif [ $i -gt 1 ];then
count+=x2 # , “ ”
echo $count=$[2**$i]
else echo "Error:please enter a number!"
fi
done
:
[root@xxj shell]# bash 33.sh
please enter a number: 0
1
[root@xxj shell]# bash 33.sh
please enter a number: 1
1
2
[root@xxj shell]# bash 33.sh
please enter a number: 5
1
2
2x2=4
2x2x2=8
2x2x2x2=16
2x2x2x2x2=32
[root@xxj shell]# bash 33.sh
please enter a number: Errot:please enter a number!
10. 스 크 립 트 를 하나 쓰 고 이 몇 가지 함 수 를 씁 니 다.
함수 1. 주어진 두 수치의 합 을 실현 합 니 다.
함수 2. 주어진 두 수치의 최대 공약수 추출 하기;
함수 3. 주어진 두 수치의 최소 공배수, 함수 에 대한 선택, 두 수 치 는 모두 스 크 립 트 매개 변 수 를 통 해 입력 합 니 다.
11. 텍스트 처리 도구 sed 와 awk 의 용법 을 정리 합 니 다. (예시 가 있어 야 합 니 다)
sed 사용 입문 상세 설명
sed 진급
awk 입문 설명 사용
awk 상용 함수
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.