Ⅰ 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章节有详细介绍,可以拿来参考。