在linux下使用EOF標記簡化輸入來書寫一個創建用戶的shell腳本,以及if條件判斷的參數整理。

EOF用來標記一段文字(一般都是多行的,省得編碼麻煩,用"<<"加上一個標記就可以把一大段代碼存入到一個變量中去了)
$taoye=<< “EOF” 的意思就是說:下一行開始,直到遇見“EOF”爲止,所有的字符都按照指定的格式存入變量a中。
等等其他的名字都可以,就是一個標記而已。他的作用就是簡化輸入。

cat> 文件名<<eof
用來創建文件
在這之後輸入任何東西 都是在 文件裏的
輸入完成之後EOF結尾 代表結束
比如

[root@ck taoyeshell]# cat >useradd1.sh<<EOF

> #!/bin/bash
> read -p "請輸入您要創建的用戶名" user
> #使用-z可以判斷一個變量是否爲空,如果爲空,提示用戶必須輸入賬戶名,並退出腳本,退出碼爲2
> #沒有輸入用戶名腳本退出後,使用$?查看的返回碼爲2
> if [ -z $user ];then
> echo "您不需要輸入用戶名"
> exit 2
> fi
> #使用stty -echo關閉shell的回顯功能
> #使用stty echo打開shell的回顯功能
> stty -echo
> read -p "請輸入密碼:" pass
> stty echo
> pass=${pass:-123456}
> useradd "$user"
> echo "$pass" | passwd --stdin "$user"
> EOF

[root@ck taoyeshell]# ./useradd1.sh
請輸入您要創建的用戶名:daguai
請輸入密碼:更改用戶 daguai 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@ck taoyeshell]# echo $?
0

[root@ck taoyeshell]# ./useradd1.sh
請輸入您要創建的用戶名:
您沒有輸入用戶名
[root@ck taoyeshell]# echo $?
2

shell 腳本下的條件判斷if 的參數整理

[ -a FILE ] 如果 FILE 存在則爲真。
[ -b FILE ] 如果 FILE 存在且是一個塊特殊文件則爲真。
[ -c FILE ] 如果 FILE 存在且是一個字特殊文件則爲真。
[ -d FILE ] 如果 FILE 存在且是一個目錄則爲真。
[ -e FILE ] 如果 FILE 存在則爲真。
[ -f FILE ] 如果 FILE 存在且是一個普通文件則爲真。
[ -g FILE ] 如果 FILE 存在且已經設置了SGID則爲真。 [ -h FILE ] 如果 FILE 存在且是一個符號連接則爲真。
[ -k FILE ] 如果 FILE 存在且已經設置了粘制位則爲真。
[ -p FILE ] 如果 FILE 存在且是一個名字管道(F如果O)則爲真。
[ -r FILE ] 如果 FILE 存在且是可讀的則爲真。
[ -s FILE ] 如果 FILE 存在且大小不爲0則爲真。
[ -t FD ] 如果文件描述符 FD 打開且指向一個終端則爲真。
[ -u FILE ] 如果 FILE 存在且設置了SUID (set user ID)則爲真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則爲真。
[ -x FILE ] 如果 FILE 存在且是可執行的則爲真。
[ -O FILE ] 如果 FILE 存在且屬有效用戶ID則爲真。
[ -G FILE ] 如果 FILE 存在且屬有效用戶組則爲真。
[ -L FILE ] 如果 FILE 存在且是一個符號連接則爲真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則爲真。
[ -S FILE ] 如果 FILE 存在且是一個套接字則爲真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則爲真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則爲真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的設備和節點號則爲真。
[ -o OPTIONNAME ] 如果 shell選項 “OPTIONNAME” 開啓則爲真。
[ -z STRING ] “STRING” 的長度爲零則爲真。
[ -n STRING ] or [ STRING ] “STRING” 的長度爲非零 non-zero則爲真。
[ STRING1 == STRING2 ] 如果2個字符串相同。 “=” may be used instead of “==” for strict POSIX compliance則爲真。
[ STRING1 != STRING2 ] 如果字符串不相等則爲真。
[ STRING1 < STRING2 ] 如果 “STRING1” sorts before “STRING2” lexicographically in the current locale則爲真。
[ STRING1 > STRING2 ] 如果 “STRING1” sorts after “STRING2” lexicographically in the current locale則爲真。
[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

=====================================================================

基本上和其他腳本語言一樣。沒有太大區別。不過值得注意的是。[ ]裏面的條件判斷。

1、字符串判斷

str1 = str2      當兩個串有相同內容、長度時爲真
str1 != str2      當串str1和str2不等時爲真
-n str1        當串的長度大於0時爲真(串非空)
-z str1        當串的長度爲0時爲真(空串)
str1         當串str1爲非空時爲真

2、數字的判斷

int1 -eq int2    兩數相等爲真
int1 -ne int2    兩數不等爲真
int1 -gt int2    int1大於int2爲真
int1 -ge int2    int1大於等於int2爲真
int1 -lt int2    int1小於int2爲真
int1 -le int2    int1小於等於int2爲真

3、文件的判斷

-r file     用戶可讀爲真
-w file     用戶可寫爲真
-x file     用戶可執行爲真
-f file     文件爲正規文件爲真
-d file     文件爲目錄爲真
-c file     文件爲字符特殊文件爲真
-b file     文件爲塊特殊文件爲真
-s file     文件大小非0時爲真
-t file     當文件描述符(默認爲1)指定的設備爲終端時爲真

4、複雜邏輯判斷

-a         與
-o        或
!        非

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章