$#:代表命令列引數個數
$*:代表所有引數
$n:第n個引數
$?:代表最後乙個命令返回值
$$:代表當前shell的程序號pid
$是變數的引用符
= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號後面的值
+= 是新增等號後面的值
declare -a array //陣列
declare -i sum=10+20 //整型
declare -x var //定義為環境變數
declare -r var=456 //定義為唯讀的變數 不能用unset
-x read 時顯示指令碼執行的過程(用於除錯) 執行指令碼時也可加-x
-t read -t 2 tmp 2秒鐘超時
-n read -n 3 tmp 讀入3個字元自動返回
-p read -p "please input " <<====> echo -n "please input : "
-s read -p "please input :" -s passwd 以密碼形式讀入
declare -i score //定義乙個變數
read -p "input a int score:" score
echo -n "hello world" 不輸出回車符
echo -e "\033[31mking\033[0m" 支援終端控制碼命令m顏色屬性
30--37前景色
40-----47 背景色
\033[0m恢復預設顏色屬性
\033[45;36m設定背景為45前景為36
"\033[y;xh \033[10;25h" 把游標置於10行25列處
\033[k 清除游標行的內容
\033[u 恢復游標位
\033[s 儲存當前游標位
// 與檔案存在與否的判斷
-e 是否存在
-f 是否為普通檔案
-d 是否為目錄
-s 是否為非空的檔案
-p 是否為管道檔案
-b 是否為塊裝置檔案
-c 是否為字元裝置檔案
-l 是否為軟鏈結
-s 是否socket檔案
//與檔案許可權有關的判斷
-r 是否有可讀的許可權
-w 是否有可寫的許可權
-x 是否有可執行許可權
-u 是否有特權位
-g 是否有組特權位
-k 是否有t位,即貼上位
//兩個檔案的比較判斷
-nt 比較file1比file2新
-ot 比較file1比file2舊
-ef 比較file1和file2是否為同乙個檔案,一般用於判斷硬鏈結
//整數之間的大小判斷
-eq 相等
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
//字串之間的判斷
-z 是否為空字串
-n 是否為非空字串
str1 = str2 是否相等
str1 != str2 是否不等
test -d file 測試是否為目錄
test -e file 是否存在
test -s file 檔案大小是否不為0
//多重條件判斷
-a 兩個條件同時滿足,就為真,相當於and
-o 兩個條件滿足其一,就為真,相當於or
(()) 也可判斷和test一樣,可以直接使用比較符號,支援c語言格式
$var 引用var變數的值
$ 引用var變數的值
$ 引用var變數的值並且擷取a左邊的字串顯示,如果字串有多個a,則按從左向右最後乙個a擷取
$ 引用var變數的值並且擷取a左邊的字串顯示,如果字串有多個a,則按從左向右第乙個a擷取
$ 引用var變數的值並且擷取a右邊的字串顯示,如果字串有多個a,則按從左向右第乙個a擷取
$ 引用var變數的值並且擷取a右邊的字串顯示,如果字串有多個a,則按從左向右最後乙個a擷取
$ 引用var變數的值並且從第3個字元開始擷取
$ 引用var變數的值並且從第3個字元開始擷取,擷取6個字元顯示
$ 返回var變數值的長度
$ 替換變數值的字串,這裡是把var變數值裡的a換成b,如果有多個a也只能換一次
$ 替換變數值的字串,這裡把var變數值裡的a全換成b
if test 6 -eq 5 -a 7 -gt 8
if [ 6 -eq 5 ] && [ 7 -gt 8 ]
if [ 6 -eq 6 -a 9 -gt 8 ]
if test 6 -eq 5
if ((6==5))
if test $score -lt 0 -o $score -gt //100小於0或者大於100
用法:
len=$
expr length "this is a test"
14 //輸出
expr 14 % 9
5 //輸出
expr substr "this is a test" 3 5 //遇到空格停止
is is //輸出
expr index "testforthegame" e
2 //輸出
num=$(($random % 1000))
expr $num + 100 &> /dev/null //不顯示任何東西
if [ $? -ne 0 ]
then
echo "input error!"
exit 1
fi
#!/bin/bash
if [ $? -ne 0 ]
then
echo "user nonexistent"
exit 1
fiecho "$uid"
exit 0
#-n表示位數
read -p "input a key:" :-n 1 key
#./***.sh /var/ftp/pub/ttt.txt
if [ $# -ne 1 ]
then
echo -e "\033[31muse:$0 filepath\033[0m"
exit 1
fi#是否存在 '!'取假
fname=$1
if ! test -e $fname
then
echo -e "\033[31m$fname is not exist\033[0m"
exit 2
fi#判度是否為普通檔案
if [ -f $fname ] #if test -f $fname
then
#判斷是否為空檔案
if ! test -s $fname
then
rm -rf $fname
if [ $? -eq 0 ]
then
echo "$fname is empty file,del..."
fifi
else
echo "is not file!!!"
fiexit 0
read -p "input a ip:" ip
#檢查ip是否合法
ping -c 1 $ip &> /dev/null
if [ $? -eq 0 ]
then
echo "yes."
else
echo "no."
fi
read -p "input a int number:" num
len=$
for i in $(seq 0 $((len-1)))
don=$
case $n in
[[:digit:]])
;;*)
echo "input error!!!"
exit 1
;;esac
done
#!/bin/bash
files='ls ./*.txt'
for txt in $files
do doc='echo $txt | sed "s/.txt/.doc"'
mv $txt $doc
done
#! /bin/bash
dirname='ls /root| grep bak'
if [ -z "$dirname" ]
then
mkdir /root/bak
cd /root/bak
fiyy='date % y'
mm='date % m'
dd='date % d'
backetc=$yy$mm$dd_etc.tar.gz
tar -zcvf $backetc /etc
echo "finished!"
kafka的一些指令碼命令
1.啟動kafka服務 啟動zookeeper bin zookeeper server start.sh config zookeeper.properties 啟動kafka bin kafka server start.sh config server.properties 2.建立乙個主題 ...
常用Shell指令碼命令 備忘
此處紀錄一些個人常用的shell命令,留作復用 docker start 映象id docker stop 容器id docker rm 容器id docker rmi docker images awk 1 shell dir home yan code shell dmc echo e 033 ...
一些常用的基本命令
一些常用的基本命令 uname a 檢視核心版本 ls al 顯示所有檔案的屬性 pwd 顯示當前路徑 cd 返回上一次目錄 cd 返回主目錄 date s 設定時間 日期 cal 顯示日曆 cal 2006 bc 計算器具 man info 幫助手冊 locale 顯示當前字型 locale a ...