2016-04-27 62 views
0

對不起,如果這是措辭不佳,因爲我是新的shell腳本。在bash中傳遞參數如unix date命令

我想寫一個腳本,我想採取像unix date命令這樣的參數。

例子:

$ date '+%I:%M %p' 
08:45 PM 

那麼我將如何做這樣的事情在我的劇本?


編輯:我想在我的腳本中做什麼是傳遞參數以相同的方式作爲日期命令。

所以,如果我的腳本要改變所有%一個參數爲foo,它會執行以下操作:

$ ./myscript '%a bar' 
foo bar 
+1

這不是你想在bash中做的事情。 –

+1

它是你希望模擬的日期的函數還是隻是基本的命令行參數傳遞?查看[GNU Bash參考手冊](https://www.gnu.org/software/bash/manual/)並查看'$ *','$ @'等以獲取關於後者的信息。 –

+0

這實際上相當複雜,它們解析的實際參數比將參數傳遞到腳本本身要困難得多。你想解析這樣的字符串......'+%I:%M%p'? – Harry

回答

1

感謝@tripleee我能拿出一個解決方案,讓您能夠替代多個關鍵字在一個字符串arg中。

下面的代碼:

res="${1}" 
res="${res//"%a"/water}" 
res="${res//"%b"/chocolate}" 
echo "$res" 

輸入:

./myscript "like %a for %b" 

輸出:

like water for chocolate 

這種方法能看穿你想在ARG更換,即使它不是每一個關鍵字在那裏,所以它不是很有效率,但它完成了工作。

+0

您希望將第一個斜槓加倍,以便進行全局替換。用一個斜槓,只有第一次出現將被替換。 – tripleee

+0

我預計這會比外部命令更快,即使是幾十個替換。 – tripleee