iT邦幫忙

0

shell script 的判斷式怎麼寫

我現在需要重組一段網址
變數可能有 x y z
組出來要像這樣
http://test.com.tw/x/x.ear
http://test.com.tw/y/y.war
http://test.com.tw/z/z.war

只有變數x的結尾會不一樣

變數x的值 結尾都會有apservice的參數
例如1apservice , 2apservice , 3apservice 這樣

其他不是apservice結尾的 拼出來的網址都要是.war

看更多先前的討論...收起先前的討論...
抱歉,真的無法明白你要的東西是什麼。
slime iT邦大師 1 級 ‧ 2019-12-12 18:35:21 檢舉
我猜是這樣:
輸入變數,
如果變數是字串而且結尾是apservice, 產生網址http://test.com.tw/字串/字串.ear
如果變數是字串但結尾不是apservice, 產生網址http://test.com.tw/字串/字串.war
ccutmis iT邦高手 8 級 ‧ 2019-12-12 18:42:00 檢舉
mod_rewrite ?
froce iT邦大師 1 級 ‧ 2019-12-12 20:05:06 檢舉
ㄜ,為啥都是中文我全部都看不懂...
rw規則看起來也不像。
因為又是shell 又是判斷式,然後又是網址。最後還神來一筆war。

我真的猜不到他要什麼。
@froce ++
總不會是POST oooo?X=100 之類的這種東西吧?
舜~ iT邦高手 1 級 ‧ 2019-12-13 06:38:36 檢舉
用regex抓出xyz,然後樓主在自行DIY ?

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-12-13 09:47:42
最佳解答

test.sh 的內容如下

str=$1

len=${#str}

if [ $len -ge 9 ]
then
	if [ "${str:$len-9:9}" == "apservice" ]
	then
	   echo "http://test.com.tw/$1/$1.ear"
	else
	   echo "http://test.com.tw/$1/$1.war"   
	fi
else
   echo "http://test.com.tw/$1/$1.war"   
fi

執行結果

mymacroot$ ./test.sh 1apservice
http://test.com.tw/1apservice/1apservice.ear
mymacroot$ ./test.sh 2apservice
http://test.com.tw/2apservice/2apservice.ear
mymacroot$ ./test.sh 3apservice
http://test.com.tw/3apservice/3apservice.ear
mymacroot$ ./test.sh TGIFriday
http://test.com.tw/TGIFriday/TGIFriday.war
mymacroot$ 

選我最佳解答

sleepgod iT邦新手 5 級 ‧ 2019-12-13 10:19:40 檢舉

謝謝海綿大大

但如果那些隨機變數 是產再一個test.conf的檔案裡
https://ithelp.ithome.com.tw/upload/images/20191213/20120305SA6NMuI9kZ.jpg
類似圖片這樣
程式需要自動讀取此test.conf產出網址 那程式要怎麼修改比較好

初學linux 語法不太懂

filename="test.conf"
while read line; do

	str="$line"

	len=${#str}

	if [ $len -ge 9 ]
	then
		if [ "${str:$len-9:9}" == "apservice" ]
		then
		   echo "http://test.com.tw/$str/$str.ear"
		else
		   echo "http://test.com.tw/$str/$str.war"   
		fi
	else
	   echo "http://test.com.tw/$str/$str.war"   
	fi

done < $filename

我要發表回答

立即登入回答