2016-10-11 94 views
0

你好這裏所有新手:d慶典 - 命令行參數腳本

我是在一個項目工作,現在涉及的是處理一個* .dat的文件。該腳本的腳本下用戶

inputed特定命令運行

我的問題是,我無法弄清楚如何「搶」,從命令的參數「進口」他們的腳本

這裏有來自特定命令的一些例子:

  1. ./tool.sh -f <file>

  2. ./tool.sh -f <file> -id <id>

  3. ./tool.sh --born-since <dateA> --born-until <dateB> -f <file>

其中tool.sh是腳本的名稱,<file>*.dat文件,<date>就是這種格式YYYY-MM-DD的日期

所以你可以看到有短字和長字。我知道getopts命令很難處理長整數。我如何使用「單個」代碼處理所有這些問題?

編輯:我需要使用的參數和條件表達式使用「如果」

因此可能我只是做一個案例:

#!/bin/bash 
getopts f a 
if [ $1 == "something" && $2 == "something2" && $a == "f" ]; then 
.... 
elif [ $1 == "something3" && $2 == "something4" && $a == "f" ] 
.... 
else 
.... 
fi 

那會是正確的嗎?

+0

參數是'$ 1','$ 2','$ 3'等 – Barmar

+0

[BashFAQ#35](HTTP: //mywiki.wooledge.org/BashFAQ/035)是你的朋友。 –

回答

0

在bash腳本,您可以通過訪問命令的命令行參數,像這樣:

echo $1 # the first argument 
echo $2 # the second argument 
+0

這是越野車。如果使用'./tool.sh'*''運行,它將在當前目錄中打印所有文件名,而不是'*'。需要「回聲」$ 1「',並加引號。即使如此,它也不能幫助OP解析命名而不是位置的參數。 –