Linux shell

跟着胡帥老師自學shell筆記
推薦書籍:高級bash腳本編程指南 和 shell腳本專家指南
#!/bin/bash
flag=0 #變量直接賦值,等號兩邊不可以有空格。
echo $flag #查看變量的值
Linux shell
變量間接賦值 read -p "enter your name:" name
Linux shell
用戶自定義變量一般都小寫 如 name age
系統內置的環境變量一般都是大寫,如 UID PATH
echo $?
/dev/null 2>&1
打印菜單
後面一個EOF必須定格寫
Linux shell
vim中開啓語法高亮 :syntax enable
比較數字 [ ] 中括號內部兩邊要有至少一個空格 -eq -ne -gt -lt -ge -lt
user_id=500
[ $user_id -ne 1000 ] && echo "your are not a vaild user"
lineNum=$(cat /etc/passwd | wc -l)
反引號`` 和 $()是等價的
[ $lineNum -gt 10 ] && cat /etc/passwd | head -10
雙中括號[[ ]]內可以使用 = > < != >= <=
[[ $num != 10 ]] && echo yes || echo no
比較字符串
name=zhangsan
[[ $name = "zhangsan" ]] && echo yes || echo no
判斷變量是否爲空值 [ -z $name ] && echo yes || echo no #如果變量name爲空值,返回yes, 如果不爲空,返回no
dir=/tmp/test/
[ -d $dir ] 判斷一個路徑是否存在
[ -f test.txt ] 判斷一個文件是否存在
[ -z $name ] 判斷一個變量值是否爲空
[ -x test.sh ] 判斷一個文件是否有執行權限
定義函數
error_info()
{
函數體
}
調用函數只需寫函數名即可 error_info

位置變量
$1 $2 $# $@ $0
$0 腳本的路徑和名稱
$1 第一個參數
$2 第二個參數
$# 一個有多少個參數
$@ 顯示出所有的參數

vi ip.sh
#!/bin/bash
#註釋信息
#echo $1 $#
[ $# -ne 1 ] && echo 'need $1' && exit 1
ip=$1
#ip=192.168.1.100
ping -c 2 -w 2 $ip > /dev/null 2>&1
[ $? -eq 0 ] && echo "$ip is online"

bash ip.sh 192.168.1.101 2 3 4

vi test.sh
#!/bin/bash
test()
{
echo "$1"
}
test 127.0.0.1
echo $1

bash test.sh hello

[ $# -ne ]
[ -z $1 ] && exit 1

if判斷
i=2
if [ $i -eq 0 ];then
echo "yes"
else
echo "no"
fi

循環 while 和 for

vi while.sh
#!/bin/bash
i=0
while [ $i -ne 10 ]
do
echo i=$(($i+1))
echo $i
done

for i in 1 2 3 or {1..10} or seq 10
do
echo $i
done
a=seq 10

for i in ls
do
echo cat $i
done

break跳出循環 和 continue 跳出本次循環進入下一次循環
#!/bin/bash
i=0
while [ 9 -ne 10 ]
do
i=$(($i+1))
echo $i
[ $i -ge 13 ] && break
done

#!/bin/bash
cat a.txt |
while read line
do
echo $line
sleep 1
done

case 多條件分支
#!/bin/bash
read -p "choice:" choice
case $choice in #格式 case 變量 in
start) s|start) #寫s也可以寫start也可以
echo "start" ;;
stop)
echo "stop" ;; #不要忘記後面的兩個分號
restart)
echo "restart" ;;
)
echo '
' ;;
esac #結尾case反寫

[ $# -ne 1 ] && echo 'error'
choice=$1
start()
{
echo 'start'
}

cat mysql | grep -v ^# > mysql

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