Shell 작업 의 세부 사항 정리 (완료 되 지 않 음)

리 눅 스 를 공부 하 는 과정 에서 작은 문제 에 부 딪 힌 적 이 있 습 니 다. 하 찮 을 수도 있 지만 디 테 일 을 추구 할 때 고민 (강박 증 범) 이 많 습 니 다. 블 로그 글 공간 을 비우 고 디 테 일 한 내용 을 기록 하 는 것 은 모두 작고 간단 한 것 입 니 다. 뿌리 지 마 세 요.
01. bc 계산 시 부동 소수점 문제
bc 로 숫자 를 계산 할 때 결과 에 소수점 이 나타 나 면 소수점 이후 내용 이 기본적으로 표시 되 지 않 아 별로 신경 쓰 지 않 았 다.
[root@linux-node1 wangdong]# echo "1500/1024" | bc
1
[root@linux-node1 wangdong]# 
[root@linux-node1 wangdong]# echo "scale=4;1500/1024" | bc
1.4648
[root@linux-node1 wangdong]#

02, if 조건문 판단 문자열 포함
if 의 정규 용법 을 사 용 했 습 니 다. 다만 여기 서 일치 하 는 것 은 정규 표현 식 이 아니 라 문자열 과 일치 할 뿐 입 니 다.
[root@linux-node1 wangdong]# cat test.sh 
#!/bin/bash
A="abcdefg"
if [[ $A =~ $1 ]];then
    echo "suc"
fi
[root@linux-node1 wangdong]# 
[root@linux-node1 wangdong]# sh test.sh bcd
suc
[root@linux-node1 wangdong]# sh test.sh h
[root@linux-node1 wangdong]# sh test.sh g
suc
[root@linux-node1 wangdong]#

03. 서로 다른 시스템 의 bash 와 sh
CentOS 와 Redhat 시스템 에서 bash 와 sh 는 같은 것 이 고 그들 사 이 는 소프트 링크 의 관 계 를 볼 수 있 습 니 다.
[root@linux-node1 /]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@linux-node1 /]# ll /bin/sh
lrwxrwxrwx 1 root root 4 12月 14 11:15 /bin/sh -> bash

그러나 우 분투 와 데 비 안 시스템 에 서 는 bash 와 sh 가 다르다.
root@debian-node1:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.9 (wheezy)
Release:        7.9
Codename:       wheezy
root@debian-node1:~# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar  1  2012 /bin/sh -> dash
root@debian-node1:~# ls -l /bin/bash
-rwxr-xr-x 1 root root 975488 Sep 26  2014 /bin/bash

효과 적 으로 도 다 릅 니 다. 예 를 들 어 레이아웃 을 할 때 사용 하 는\t 는 tab 문 자 를 대표 합 니 다.
root@debian-node1:~# cat bash.sh 
#!/bin/bash
echo "This\tis\tbash\t!"
root@debian-node1:~# bash bash.sh
This\tis\tbash\t!
root@debian-node1:~# cat sh.sh
#!/bin/sh
echo "This\tis\tsh\t!"
root@debian-node1:~# sh sh.sh 
This    is      sh      !

bash 지원\t 가 필요 하 다 면 echo 에서 - e 인 자 를 사용 해 야 합 니 다.
root@debian-node1:~# cat bash.sh 
#!/bin/bash
echo "This\tis\tbash\t!"
root@debian-node1:~# bash bash.sh 
This\tis\tbash\t!
root@debian-node1:~# cat bash2.sh 
#!/bin/bash
echo -e "This\tis\tbash\t!"
root@debian-node1:~# bash bash2.sh 
This    is      bash    !

sh 는 기본적으로 if 의 정규 형식 을 사용 하면 오 류 를 보고 할 수 있 지만 bash 는 그렇지 않 습 니 다.
root@debian-node1:~# cat sh_if.sh 
#!/bin/sh
A=abcdef
if [[ $A =~ $1 ]];then
    echo "ok"
fi
root@debian-node1:~# sh sh_if.sh c
sh_if.sh: 5: sh_if.sh: [[: not found
root@debian-node1:~# 
root@debian-node1:~# 
root@debian-node1:~# cat bash_if.sh 
#!/bin/bash
A=abcdef
if [[ $A =~ $1 ]];then
    echo "ok"
fi
root@debian-node1:~# bash bash_if.sh c
ok

이 점 에 대하 여 깊이 연구 하지 않 았 으 니, 마 땅 히 지지 할 방법 이 있어 야 한다.
sh 에 대하 여: http://man.cx/sh
bash 에 대하 여: http://man.cx/bash
04. 계산 에 대한 사용
A、bc
    bc 는 Liux 에 내 장 된 간단 한 계산기 입 니 다. 현재 저 는 비교적 즐겨 사용 하고 있 습 니 다. 이 유 는 하나 입 니 다. 간단 합 니 다.다만 그 가 계산 한 결과 0 - 1 사이 의 소수, 예 를 들 어 0.5 라면 표시 할 때 5 만 표시 되 어 나 를 아 프 게 할 것 이다.
    우선 간단 한 가감 곱 하기 계산 이다.
[root@linux-node1 ~]# echo "1234+5678"|bc
6912
[root@linux-node1 ~]# echo "20000-50"|bc
19950
[root@linux-node1 ~]# echo "20*30"|bc
600
[root@linux-node1 ~]# echo "15/2"|bc
7
[root@linux-node1 ~]# echo "scale=2;15/2"|bc
7.50

    그 다음 에 2, 8, 10, 16 진법 으로 전환 할 수 있 습 니 다.http://jonly.blog.51cto.com/889501/1536237)
    그 중에서 ibase 에서 원본 바 꾸 기, obase 쓰기 변환 바 꾸 기.
[root@linux-node1 ~]# echo "obase=2;ibase=10;15" |bc 
1111
[root@linux-node1 ~]# echo "obase=16;ibase=10;15" |bc 
F

    마지막 으로 제곱 근 과 제곱 근 을 계산한다.
[root@linux-node1 ~]# echo "2^8"|bc
256
[root@linux-node1 ~]# echo "sqrt(9)"|bc
3
[root@linux-node1 ~]# echo "sqrt(10)"|bc
3
[root@linux-node1 ~]# echo "scale=2;sqrt(10)"|bc
3.16

좋은 웹페이지 즐겨찾기