bash 셸 스 크 립 트 프로 그래 밍 학습 총화 1
9993 단어 linux
-------
: , ( ); 。C/C++/JAVA/C#
: , 。 。PHP,SHELL,python,perl
:shell,c; :java,python,perl,c++
:VAR_NAME = VALUE;
bash :
: shell 。
export VARNAME=VALUE VARNAME=VALUE export VARNAME " " 。
shell :
[root@iZ233y80y23Z ~]# NAME=LINJUNBIN
[root@iZ233y80y23Z ~]# export NAME
[root@iZ233y80y23Z ~]# echo $NAME
LINJUNBIN
[root@iZ233y80y23Z ~]# bash // shell;
[root@iZ233y80y23Z ~]# echo $NAME // 。
LINJUNBIN
( ):
bash : :VARNAME=VALUE
: 。local VARNAME=VALUE
:
$1,$2,....
:(bash ):$?: ;
; $?=0-255
0: ;1-255: ;
1,2,127: 。
$?: ;
$#:
$*:
$@:
:${VAR_NAME}, 。
[root@iZ233y80y23Z ~]# echo "there are some ${ANIMAL}s."
there are some PIGs.
[root@iZ233y80y23Z ~]# echo 'there are some ${ANIMAL}s.'
there are some ${ANIMAL}s.
:'' "" 。
:
>:>>:2>:2>>,&>
:
/dev/null: ;/dev/null: ;
eg: 。
[root@iZ233y80y23Z ~]# id student &> /dev/null
[root@iZ233y80y23Z ~]# echo $?
1
:
unset VARNAME $;
:
set ;set: ;
:printenv ,env, export; 。
eg:
[root@iZ233y80y23Z ~]# ANIMALS=pig
[root@iZ233y80y23Z ~]# ANIMALS=$ANIMALS:goat
[root@iZ233y80y23Z ~]# echo $ANIMALS
pig:goat
: ,
:id user1 &> /dev/null && echo "hello user1";
[root@iZ233y80y23Z test]# id root &> /dev/null && echo 'root'
root
셸 조건 판단
$? 。
:
-eq: ;
-ne: , , ; , ;
-gt: ;
-lt: ;
-ge: ;
-le: ;
eg:
[root@iZ233y80y23Z test]# A=3
[root@iZ233y80y23Z test]# B=4
[root@iZ233y80y23Z test]# [ $A -eq $B ]
[root@iZ233y80y23Z test]# echo $?
1
[root@iZ233y80y23Z test]# B=3
[root@iZ233y80y23Z test]# [ $A -eq $B ]
[root@iZ233y80y23Z test]# echo $?
0
:
:
: : 。
[ expression ],[[ expression ]] , test expression
:
;
:&&, , 。
:|| , 。 。
eg: user6 , user6
! id user6 &> /dev/null && useradd user6
id user6 &> /dev/null || useradd user6
LINE=`wc -l /etc/inittab`; 。
eg: /etc/inittab 100, , 。
[root@iZ233y80y23Z test]# cat souce.sh
#!/bin/bash
LINES=`wc -l /etc/inittab`
echo $LINES
FINLINES=`echo $LINES | cut -d' ' -f1`
echo $FINLINES;
[ $FINLINES -gt 100 ] && echo "/etc/inittab is a big file." || echo "/etc/inittab is a small file"
[root@iZ233y80y23Z test]# bash souce.sh
17 /etc/inittab
17
/etc/inittab is a small fi
eg: :
`! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo 'user1 exists`
, passwd。 ; 。
[root@iZ233y80y23Z test]# bash addUser.sh
user1 exists
39
[root@iZ233y80y23Z test]# cat addUser.sh
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo 'user1 exists'
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &> /dev/null || echo 'user2 exists'
! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd --stdin user3 &> /dev/null || echo 'user3 exists'
#
LINES=`wc -l /etc/passwd | cut -d' ' -f1`
echo $LINES;
eg:
# root ;
[root@iZ233y80y23Z test]# bash is_root.sh
is root
[root@iZ233y80y23Z test]# cat is_root.sh
#!/bin/bash
USER_UID=`id -u`;
[ $USER_UID -eq 0 ] && echo 'is root' || echo "is not root and this uid is ${UID}"
: is_root.sh: line 2: UID: readonly variable, UID , 。
조건 판단
if :
if
then
statement1;statement2;
fi
if :
if ; then
statement1;statement2;...
else
statement3;statement4;...
fi
if
if 1; then
statement1;...
elif 2; then
statement2;...
elif 3; then
statement3;...
...
else
statement4;...
fi
eg:
# :
[root@iZ233y80y23Z test]# bash user.sh
user12 IS NOT exists
[root@iZ233y80y23Z test]# cat user.sh
#!/bin/bash
NAME=user12;
if id $NAME &> /dev/null; then
echo "$NAME is exists"
else
echo "$NAME IS NOT exists"
fi
# , ;
eg:
# shell bash: , ,
[root@iZ233y80y23Z test]# ./is_bash.sh
the shells of 10 users is bash shell
[root@iZ233y80y23Z test]# cat is_bash.sh
#!/bin/bash
# shell bash
grep "bash$" /etc/passwd &> /dev/null;
RETVAL=$?;
if [ $RETVAL -eq 0 ]; then
USERS=`grep "\ /dev/null;
HAS_SPACE=$?
if [ $HAS_SPACE -eq 0 ] ; then
SPACES=`grep "^$" /etc/inittab | wc -l`;
echo "total SPACES is $SPACES LINES";
else
echo "no any spaces in /etc/inittab";
fi
[root@iZ233y80y23Z test]#
: ;
# uid GID,
[root@iZ233y80y23Z test]# cat uid_eq.sh
#!/bin/bash
USERNAME=user1
#USERID=`id -u $USERNAME`;
USERID=`grep "^user1" /etc/passwd | cut -d: -f3`
GROUPID=`grep "^user1" /etc/passwd | cut -d: -f4`
#GROUPID=`id -g $USERNAME`;
if [ $USERID -eq $GROUPID ] ; then
echo 'Good guy';
else
echo 'Bad guy';
fi
# :date +%s 1970 ;man date
echo $HISTSIZE;
#
# ;bash -x
eg: 。bash -x
[root@iZ233y80y23Z test]# bash -x file_test.sh
+ FILE=/etc/inittab
+ '[' -e /etc/inittab ']'
+ echo OK
OK
[root@iZ233y80y23Z test]#
# , , , , 。
[root@iZ233y80y23Z test]# ./file_test.sh
common file
[root@iZ233y80y23Z test]# cat file_test.sh
#!/bin/bash
FILE=/etc/inittab
if [ ! -e $FILE ]; then
echo 'no such file';
exit 6;
fi
if [ -f $FILE ]; then
echo 'common file';
elif [ -d $FILE ]; then
echo 'directory';
else
echo 'unknown';
fi
: ! ;
셸 에서 산술 연산 을 진행 하 다.
shell ;
[root@iZ233y80y23Z test]# A=3
[root@iZ233y80y23Z test]# B=4
[root@iZ233y80y23Z test]# echo $A+$B
3+4
1,2,3 :
1、 let:
let C=$A+$B
2、$[ ]
C=$[$A+$B]
3、$(( ))
C=$(($A+$B))
4、expr , ,
F=`expr $A + $B`
5、 bc
스 크 립 트 종료
exit: ;
exit n;n ;
, , ;
테스트 방법
:
[ expression ]: , ;
[[ expression ]]: ;
test expression:
-gt,-le,-ne,-eq,-ge,-lt: , 。
if `grep "^$USERNAME\>" /etc/passwd` ; then
:
-e FILE: 。
-f FILE:
-d FILE: ;
-r FILE:
-w FILE:
-x FILE:
eg:
[ -e /etc/inittab ] ,[ -x /etc/rc.d/rc.sysinit ]
[root@iZ233y80y23Z test]# ./exitst_file.sh
NO /etc/iniittab
[root@iZ233y80y23Z test]# cat exitst_file.sh
#!/bin/bash
FILE=/etc/iniittab
if [ ! -e $FILE ] ; then
echo "NO $FILE"
exit 8;
fi
: ;/
:
[root@iZ233y80y23Z test]# history | tail -1 | cut -d' ' -f2
1012
위치 변수 (매개 변수)
$1,$2,...
./file_test.sh /etc/fstab /etc/inittab;
$1:/etc/fstab; $2:/etc/inittab;
shift: ; shift ;
shift n: n ;
# : , OK, no such file
eg:$#: ;$*: $@: ;
[root@iZ233y80y23Z test]# ./exitst_file.sh /etc/inittab /ffff /ttddd
3
/etc/inittab /ffff /ttddd
/etc/inittab /ffff /ttddd
OK
[root@iZ233y80y23Z test]# cat exitst_file.sh
#!/bin/bash
echo $#
echo $*
echo $@
if [ ! $1 ]; then
echo 'please add parame file';
exit;
fi
if [ -e $1 ] ; then
echo "OK"
else
echo "no such file";
fi
[root@iZ233y80y23Z test]#
# shift
[root@iZ233y80y23Z test]# ./shift.sh 1 2 3 4 5
5
1
2
4
[root@iZ233y80y23Z test]# cat shift.sh
#!/bin/bash
echo $#;
echo $1;
shift
echo $1;
shift 2
echo $1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.