셸 스 크 립 트 프로 그래 밍 학습 노트 (1)

9588 단어 shell
셸 스 크 립 트 프로 그래 밍
shell    C  ,C        ,shell      。

스 크 립 트 형식
#!/bin/bash        #shell       ,     shell   
echo "hello world"

변량
셸 기본 변 수 는 일반적으로 문자열 입 니 다.
  • 변수 정의, 할당 명명 규칙 은 C 언어 와 유사 하여 숫자 로 시작 할 수 없습니다
    yourname="guangjieMVP"   #   “=”、   “=”       ,   C    
    
  • 변수의 인용
    echo $yourname     #  $       
    
  • 변수의 종류
  • 사용자 정의 변수
    a="apple"
    o="orange"
    b="banana"
    
  • 시스템 에서 환경 변수 설정 환경 변 수 를 미리 정의 합 니 다. 예 를 들 어 PATH 환경 변 수 는 시스템 실행 가능 한 프로그램 과 스 크 립 트 의 경로
  • 를 저장 합 니 다.
            export PATH=shell_learning/
    
          ,    :
    
    ```shell
    export PATH=$PATH:dir/
    ```
    
        shell      ,       :
    
    ```shell
    source ~/.bashrc
    ```
    
    **env**              
    
    ```shell
    ares@ares-VirtualBox:~/shell_learning$ env
    XDG_VTNR=7
    XDG_SESSION_ID=c2
    CLUTTER_IM_MODULE=xim
    XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ares
    GPG_AGENT_INFO=/home/ares/.gnupg/S.gpg-agent:0:1
    SHELL=/bin/bash
    TERM=xterm-256color
    VTE_VERSION=4205
    QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
    WINDOWID=69207132
    UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/1621
    GNOME_KEYRING_CONTROL=
    GTK_MODULES=gail:atk-bridge:unity-gtk-module
    USER=ares
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    QT_ACCESSIBILITY=1
    XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
    XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
    SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
    DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
    XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
    PATH=/home/ares/bin:/home/ares/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ares/imx6ull-toolchain/arm-gcc/bin
    DESKTOP_SESSION=ubuntu
    QT_IM_MODULE=fcitx
    QT_QPA_PLATFORMTHEME=appmenu-qt5
    XDG_SESSION_TYPE=x11
    PWD=/home/ares/shell_learning
    JOB=gnome-session
    XMODIFIERS=@im=fcitx
    GNOME_KEYRING_PID=
    LANG=zh_CN.UTF-8
    GDM_LANG=zh_CN
    MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
    IM_CONFIG_PHASE=1
    COMPIZ_CONFIG_PROFILE=ubuntu
    GDMSESSION=ubuntu
    SESSIONTYPE=gnome-session
    GTK2_MODULES=overlay-scrollbar
    HOME=/home/ares
    XDG_SEAT=seat0
    SHLVL=1
    LANGUAGE=zh_CN:zh
    LIBGL_ALWAYS_SOFTWARE=1
    GNOME_DESKTOP_SESSION_ID=this-is-deprecated
    UPSTART_INSTANCE=
    UPSTART_EVENTS=started starting
    XDG_SESSION_DESKTOP=ubuntu
    LOGNAME=ares
    QT4_IM_MODULE=fcitx
    XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share:/usr/share:/var/lib/snapd/desktop
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2jsMy4vOLJ
    LESSOPEN=| /usr/bin/lesspipe %s
    ARCH=arm
    INSTANCE=Unity
    UPSTART_JOB=unity-settings-daemon
    CROSS_COMPILE=arm-linux-gnueabihf-
    XDG_RUNTIME_DIR=/run/user/1000
    DISPLAY=:0
    XDG_CURRENT_DESKTOP=Unity
    GTK_IM_MODULE=fcitx
    LESSCLOSE=/usr/bin/lesspipe %s %s
    XAUTHORITY=/home/ares/.Xauthority
    OLDPWD=/home/ares
    _=/usr/bin/env
    ```
    
  • 명령 행 변 수 는 명령 행 에서 셸 프로그램 을 실행 할 때 들 어 오 는 매개 변수 로 C 프로그램 이 명령 을 실행 할 때 도 매개 변 수 를 전달 할 수 있 습 니 다.
    ./test I love you 1314   //I love you 1314           
    
    test1. sh:
    #!/bin/bash
    
    echo $#   #            
    
    echo $1   #        
    echo $2   #        
    echo $3   #        
    echo $4   #        
                
    echo $*   #        
     
    echo $@   #       
    
    단말기 실행 * *. / test I love you 1314 * *:
    ares@ares-VirtualBox:~/shell_learning$ ./test1.sh I love you 1314
    4
    I
    love
    you
    1314
    I love you 1314
    I love you 1314
    
    
  • 특수 한 명령 행 변수 와 유사 한 변수
  • $ ? 마지막 명령 실행 후의 반환 값
  • $현재 셸 의 프로 세 스 번호 PID

  • 특수 기호
    따옴표
  • 더 블 따옴표 "사용자 정의 변수의 값 을 포함 합 니 다
    fruit="apple orange"   #    ,apple orange     ,  
    
    #!/bin/bash
    
    you="Jack"
    she="Rose"
    love="$you love $she"  #        
    
  • 작은 따옴표 '작은 따옴표 에 포 함 된 변수의 값 은 모두 일반 문자 로 간주 되 며 명령 과 변수의 인용 이 있 더 라 도.
    #!/bin/bash
    
    you="Jack"
    she="Rose"
    love='$you love $she'  #        
    echo love
    
    수출 결 과 는:
    $you love $she
    
  • 반 따옴표 ` 는 쌍 따옴표 에 명령
    #!/bin/bash
    var=calender
    
    echo "var is date"
    echo "$var is `date`"
    echo '$var is `date`'
    
    
  • 을 표시 한다.
  • 파이프 | 여러 명령 을 연결 하고 앞의 명령 결 과 는 뒤의 명령 처리
    ls -l | wc      # ls -l          ,         wc      、         
    
  • 에 전송 합 니 다.
  • 시스템 실행 을 위 한 기본 값 으로 세 개의 표준 파일 을 엽 니 다.
    파일 이름
    파일 설명자
    표준 입력
    0
    표준 출력
    1
    표준 오류
    2
    #!/bin/bash
    
    ls -l 1> a.txt   #             a.txt      
    
    echo 0< a.txt    # a.txt     
    

    학습 서적:
  • 좋은 웹페이지 즐겨찾기