Linux - shell 기초 - 1

18792 단어 shelltestFileFIelif
셸 script 은 한 번 에 여러 시스템 명령 을 처리 합 니 다. 컴 파일 없 이 실행 할 수 있 습 니 다.
자동화 관리의 중요 한 근거 추적 과 관리 시스템 의 중요 한 업무 에 따라 간단하게 침입 하 는 검 측 도구 연락 명령 을 단일 화하 고 간단 한 데이터 처리 크로스 플랫폼 지원
셸 script 은 시스템 관리 에 있어 서 좋 은 도구 이지 만 대량의 데이터 연산 을 처리 하 는 데 있어 서 좋 지 않 습 니 다.
명령 의 실행 은 위 에서 아래로, 왼쪽 에서 오른쪽으로 명령 옵션 과 매개 변수 사이 의 여러 공백 은 무 시 됩 니 다. 공백 줄 은 무 시 됩 니 다. tab 는 하나의 빈 칸 으로 간주 합 니 다. Enter (CR) 를 읽 으 면 이 줄 명령 을 실행 하려 고 합 니 다. 한 줄 의 명령 이 너무 많 으 면\Enter 를 사용 하여 다음 줄 로 확장 합 니 다.\# 주석 으로 사용 할 수 있 습 니 다.
절대 경로/상대 경로/bash 프로그램 으로 sh/bash 를 실행 합 니 다. sh 의 인자 - n 및 - x 를 이용 하여 셸 문법 이 정확 한 지 확인 합 니 다.
첫 줄\#!/빈/bash 우 리 는 bash 를 사용 하기 때문에 반드시\#!/bin/bash 는 파일 의 문법 을 bash 문법 주석 줄 을 사용 합 니 다.\# 첫 줄 을 제외 하고 다른\# 는 주석 기능 의 주요 환경 변수의 선언 입 니 다. 일부 중요 한 환경 변 수 를 PATH 와 LANG 로 설정 하 는 것 이 가장 중요 합 니 다.프로그램 이 외부 명령 을 직접 내 릴 수 있 기 때문에 절대 경 로 를 쓸 필요 가 없다.
내 export/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games "
#!/bin/bash
# program:test example 01
#          ,    =        
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
echo -e 'HELLO WORLD ! \a
'
exit 0

명령 실행 성공 여 부 를 확인 하고 사용 할 수 있 습 니까?이 변 수 는 echo 를 관찰 합 니까?출력
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p 'please input you first name:' firstname
read -p 'please input you last name:' lastname
echo "
you name is : $firstname $lastname"
exit 0 fuhui@ubuntu:~/script$ find -name 'file*' | xargs rm
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
echo  "i will use touch command to create 3 file \a
"
read -p "please input your filename:" filename filename=${filename:-"filelog"} date1=$(date --date='2 days ago' +%Y%m%d) date2=$(date --date='1 days ago' +%Y%m%d) date3=$(date +%Y%m%d) file1=${filename}${date1} # file2=${filename}${date2} file3=${filename}${date3} touch "$file1" touch "$file2" touch "$file3" exit 0

$(계산식)
변수 교체 A = B echo ${A} B 출력 BB
echo $$(3 * 2) 를 직접 사용 하여 계산 식 을 진행 합 니 다.
echo $$(3 * 2) 를 직접 사용 하여 계산 식 을 진행 합 니 다.
source 와 bash 가 실행 하 는 서로 다른 효과: 1. bash 는 하위 프로 세 스에 서 실 행 됩 니 다. 설 정 된 변 수 는 실행 한 후에 방출 됩 니 다. 2. source 가 환경 에서 설정 한 변 수 는 여전히 존재 합 니 다. (그러나 시스템 연결 이 끊 겼 습 니 다. ctrl + d 와 유사 한 효과)
우 리 는 $를 인출 한 적 이 있 습 니까?이 대표 적 인 뜻 은 그 밖 에 & & 및 | | 을 통 해 이전 명령 으로 전송 값 을 실행 하여 걷 기 후의 명령 을 36826 ℃ 로 실행 해 야 하 는 지 에 대한 근거 이기 도 합 니 다.
test              
test -e /ls
test -e /lss && echo 'exist' || echo 'no exist'


test -z string          ,   ,  true
test -n string          ,   ,  true
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p 'please input a filename: ' file

test -z $file && echo "input can't be empty" && exit 0
test ! -e $file &&  echo "the $file do not exist" && exit 0

test -f $file && filetype='regular file'
test -d $file && filetype='directory'
test -w $file && perm="$perm writable"
test -x $file && perm="$perm executable"

echo "the filename: $file is a $filetype"
echo "AND the permissions \ is a $perm"

찾 은 파일 은 모두 실행 파일 내부 에 있 습 니 다. 외부 파일 은 접근 할 수 없습니다. 왜 그런 지 모 르 겠 습 니 다.
please input a filename: sh02.sh
the filename: sh02.sh is a regular file
AND the permissions is a  writable
fuhui@ubuntu:~/script$ [ -z "$HOME" ]; echo $? 
[]          

fuhui@ubuntu:~/script$ echo $HOME
/home/fuhui

밑 에 문제 가 있어 요.
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
read -p "please input(Y/N:)" yn
[ $yn == "Y" -o $yn == 'y' ] && echo 'ok,continue ' && exit 0
[ $yn == 'N' -o $yn == 'n' ] && echo 'oh,interrupt!' && exit 0
echo 'i do not know what your coice is ' && exit 0

please input(Y/N:)y
sh06.sh: 6: [: y: unexpected operator
sh06.sh: 7: [: y: unexpected operator
i do not know what your coice is 


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input(Y/N:)" yn

[ "$yn"=="Y" -o "$yn"=="y" ] && echo 'ok,continue ' && exit 0
[ "$yn"=='N' -o "$yn"=='n' ] && echo 'oh,interrupt!' && exit 0

echo 'i do not know what your coice is ' && exit 0

    ,        ............
fuhui@ubuntu:~/script$ file /etc/init.d
/etc/init.d: directory 
fuhui@ubuntu:~/script$ file /etc/init.d/syslog
/etc/init.d/syslog: ERROR: cannot open `/etc/init.d/syslog' (No such file or directory) fuhui@ubuntu:~/script$ 
    
scriptname opt1 opt2 opt3
$01			$1  $2   $3
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

echo "the script name : $0"
echo "the number of parameters is : $#"
test $# -lt 2 && echo 'parameters is too less' && exit 0
echo "the paramters are: $@"
echo "the first parameter is: $1"
echo "the second parameter is: $2"

test\# @ - lt 2 를 직접 사용 하여 비교 합 니 다. 왜 $(test\# @ - lt 2) 를 사용 하지 않 았 습 니까?
shift 는 변 수 를 이동 할 수 있 고 shift 뒤에 숫자 를 연결 할 수 있 습 니 다. 앞의 몇 개의 인 자 를 빼 는 뜻 입 니 다.
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

echo "the script name : $0"
echo "the number of parameters is : $#"
$(test $# -lt 2) && echo 'parameters is too less' && exit 0
echo "the paramters are: $@"
shift
echo "the first parameter is: $1"
shift
echo "the second parameter is: $2"

fuhui@ubuntu:~/script$ sh sh08.sh -s atart
the script name : sh08.sh
the number of parameters is : 2
the paramters are: -s atart
the first parameter is: atart
the second parameter is: 

    shift,           
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input(Y/N:)" yn

if [ "$yn" = "Y" ] ||[ "$yn" = "y" ]; then
        echo 'ok,continue ' 
        exit 0
fi
if [ "$yn" = 'N' ] || [ "$yn" = 'n' ]; then
        echo 'oh,interrupt!' 
        exit 0
fi
echo 'i do not know what your coice is ' && exit 0
**       ,             ==  ,
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input(Y/N:)" yn

if [ "$yn" = "Y" ] ||[ "$yn" = "y" ]; then
        echo 'ok,continue ' 
        exit 0
elif [ "$yn" = 'N' ] || [ "$yn" = 'n' ]; then
        echo 'oh,interrupt!' 
        exit 0
else
        echo 'i do not know what your coice is ' && exit 0
fi
if-elif-else-if   

좋은 웹페이지 즐겨찾기