1.原因
之前寫了Windows的cmd腳本用來保存報告文件:
@echo off
cd
cd ./curl/bin
set /p exampleUrlHost=請輸入服務的IP地址:
set /p exampleUrlPort=請輸入服務的端口:
:start
echo **********************報告保存腳本**********************
echo 根據(jù)以下提示執(zhí)行
echo 0 退出
echo 1 保存年度報告
echo 2 保存月度報告
echo 3 保存當天報告
set /p exampleUrlIndex=請輸入要保存的結果序號:
if %exampleUrlIndex% == 1 (
set exampleUrlPath=/example/exampleYear
)
if %exampleUrlIndex% == 2 (
set exampleUrlPath=/example/exampleMonth
)
if %exampleUrlIndex% == 3 (
set exampleUrlPath=/example/exampleDay
)
if %exampleUrlIndex% == 0 (
exit
)
echo 正在保存...
curl http://%exampleUrlHost%:%exampleUrlPort%%exampleUrlPath%
echo 保存完成。
goto start
但是有時候服務僅在Linux環(huán)境上進行部署,所以要寫一個shell腳本進行報告的保存。
2.Shell腳本
2.1 初始版本
簡單的參數(shù)判斷,這里只給出一個分支,腳本save.sh內容如下:
#!/bin/bash
if [ $1 == 1 ]; then
echo 正在保存年度報告...
curl http://exampleUrlHost:exampleUrlPort/example/exampleYear
echo 保存完成。
else
echo "腳本請帶參數(shù)"
echo "1 保存年度報告"
fi
此時如果執(zhí)行腳本時沒有攜帶參數(shù),將會報錯:
./save.sh: line 2: [: ==: unary operator expected
這個腳本的問題很多exampleUrlHost和exampleUrlPort
都是固定的,有些時候需要修改后才能正確執(zhí)行。
2.2 交互式 case 腳本
#!/bin/bash
echo "請輸入服務的IP地址:"
read exampleUrlHost
echo "請輸入服務的端口號:"
read exampleUrlPort
echo "請選擇您的操作:"
echo "1 保存年度報告"
echo "2 保存月度報告"
echo "3 保存當天報告"
echo "4 退出"
read choice
case $choice in
1)
echo 正在保存年度報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleYear
echo 保存完成。
;;
2)
echo 正在保存月度報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleMonth
echo 保存完成。
;;
3)
echo 正在保存當天報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleDay
echo 保存完成。
;;
4)
exit 0
;;
*)
echo "無效的選項!"
;;
esac
這個版本不僅不報錯,似乎體驗還是可以的,但是想導出多個報告就要多次輸入IP和端口號,比較麻煩。文章來源:http://www.zghlxwxcb.cn/news/detail-494235.html
2.3 最終 while case 版
#!/bin/bash
echo "請輸入服務的IP地址:"
read exampleUrlHost
echo "請輸入服務的端口號:"
read exampleUrlPort
while true; do
echo "請選擇您的操作:"
echo "1 保存年度報告"
echo "2 保存月度報告"
echo "3 保存當天報告"
echo "4 退出"
read choice
case $choice in
1)
echo 正在保存年度報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleYear
echo 保存完成。
;;
2)
echo 正在保存月度報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleMonth
echo 保存完成。
;;
3)
echo 正在保存當天報告...
curl http://$exampleUrlHost:$exampleUrlPort/example/exampleDay
echo 保存完成。
;;
4)
break
;;
*)
echo "無效的選項!"
;;
esac
done
3.總結
簡單的版本也是可以實現(xiàn)功能的,但是執(zhí)行前要進行腳本的調整。文章來源地址http://www.zghlxwxcb.cn/news/detail-494235.html
到了這里,關于Linux【腳本 05】交互式shell腳本編寫及問題處理([: ==: unary operator expected)[: ==: 期待一元表達式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!