Ⅰ linux 編寫一個shell腳本文件,實現以下功能
#!/bin/bash
whiletrue
do
cat<<END
啟動Apache(a)
啟動Mysql(m)
啟動Samba(s)
啟動FTP(f)
啟動DNS(d)
退出腳本(E)
END
read-p"請輸入要執行的操作:"choice
case$choicein
a)
servicehttpdstart
;;
m)
servicemysqldstart
;;
s)
servicesambastart
;;
f)
servicevsftpdstart
;;
d)
servicenamedstart
;;
E)
exit
;;
*)
echo"輸入有誤,請輸入字母a/m/s/f/d啟動相應的服務!"
;;
esac
done
這是模板,純手打。其中的service httpd start之類的可以換成具體的命令,也可以加上if判斷。
針對按什麼鍵執行什麼操作用case判斷最方便
其中
a)的意思是如果$choice等於a的話則執行什麼什麼
m)的意思是如果$choice等於m的話則之姓什麼什麼
其餘同理
*)的意思是如果沒有以上的a) m) f)...的話就會匹配到這一行,就會輸出:輸入有誤,請輸入字母a/m/s/f/d啟動相應的服務。
read -p "請輸入要執行的操作:" choice //這是個互動式的命令,會輸出"請輸入要執行的操"作到顯示器上,然後將你輸入的值賦值給變數choice 然後再用case判斷變數choice。
if判斷也可以。根據個人喜好來。
case xxx in
x)
;;
y)
;;
*)
;;
這是語法。
Ⅱ Linux裡面shell裡面fi命令作用是什麼
fi 是if語句的固定格式,shell裡面有各種循環,都有固定的格式,個人理解是告訴計算機,這個循環語句到此,類似case循環一esac結尾一樣。
Ⅲ Linux如何編寫shell腳本
一般以#!/bin/sh開頭(不是必須要寫,但一定要單獨一行),指定執行這個腳本的shell程序(也可以用#!/bin/zsh或其他),然後就是堆命令了。
Linux的shell腳本支持很多功能,加上Linux高度模塊化的命令,完全可以用shell腳本寫出復雜的程序。
以上只是簡單介紹如何開始寫shell腳本,如果要寫復雜的腳本,還需要深入學習相關知識(如if——fi、case——esac等結構)。
當然,還需要給腳本加上可執行許可權(chmod +x ./file.sh),否則可以用sh ./file.sh方式執行腳本(這里的sh是執行腳本所需shell,命令也可以是zsh ./file.sh或其他)。
整個shell腳本,其實就相當於你在終端輸入的一系列命令,如果想在shell里做什麼,就先想想在終端可以做什麼吧,字元的的連接,就是直接用 "" 雙引號,輸出,變數定義無 $ 符號,但是使用時一定要加上 $ 符號。
"=" 賦值符號,兩邊一定不能有空格,這和其他語言有區別,尤其是你還有自己代碼美觀風格時特別注意,否則會報語法錯誤!
for 中的數組內容是以 " " 空格分隔,而非 "," 逗號分格。
條件判斷 [ true ] 中括弧 後面需要有一個空格,但是兩個中括弧之間不能有空格如 [[ true ]]。
while 條件判斷可以用 () 括弧,也可以用 [[ ]] 中括弧。
如果用windows寫shell,一定要注意換行符格式 而非 , 需要藉助一些編輯器(如notepad++)更改換行符格式!
Ⅳ linux中設計一個shell腳本程序可以接受命令行輸入的參數執行相應的菜單命令
echo "------------------------"
echo "1、命令1"
echo "2、命令2"
echo "3、命令3"
echo "------------------------"
echo "請輸入要執行的菜單命令(1/2/3):"
read com
case $com in
1)
命令1
;;
2)
命令2
;;
3)
命令3
;;
*)
echo "輸入命令錯誤"
;;
Ⅳ 1.linux系統下shell腳本用case語句編寫四則運算 2.linux系統下shell腳本輸入數字串。進行反序輸出
原來我.shell寫的侍耐桐畝孝計算器:
[root@liuxiting testdir]# cat calculator.sh
#!/bin/bash
echo "usage: 1+3 <Enter> ,q <Enter> is quit"
while [ 1 ]
do
read -p "->>" str 1>>/dev/null
a=`echo $str |awk -F '+|-|*|/' '{print $1}'`
if [ $a == q ]
then
break
fi
b=`echo $str |awk -F '+|-|*|/' '{print $2}'`
o=`echo $str |grep -o "[[:punct:]]" | grep -v "\."`
case $o in
+) awk 'BEGIN{printf " =%.2f\n",'$a'+'$b'}';;
-) awk 'BEGIN{printf " =%.2f\n",'$a'-'$b'}';;
\*) awk 'BEGIN{printf " =%.2f\n",'$a'*'$b'}';;
/)if [ $b -eq 0 ]
then
echo 0 Can NOT be denominator!
continue
fi
awk 'BEGIN{printf " =%.2f\n",'$a'/'$b'}';;
#^) awk 'BEGIN{printf " =%.2f\n",'$a'**'$b'}';;
*) echo error;;
esac
done
剛剛寫的老坦倒序輸出:
[root@liuxiting testdir]# cat XuShuChu.sh
#!/bin/bash
echo "usage: 123456 <Enter>, q <Enter> is quit"
while [ 1 ]
do
echo -n "Pleasw enter number : "
read n
if [ $n == 'q' ]
then
break
fi
sd=0
rev=""
on=$n
echo "$n"
while [ $n -gt 0 ]
do
sd=$(( $n % 10 )) # get Remainder
n=$(( $n / 10 )) # get next digit
rev=$( echo $rev$sd)
done
echo "$on in a reverse order $rev"
done
Ⅵ 學linux必須學shell么
當然了 shell是你的好幫手
你使用的好就事半功倍,被人一天的活,你一個小時就可以搞定。不用重復勞作。
SHELL腳本的編寫《 Linux就該這么學》第4章節有詳細介紹,可以拿來參考。