這是我的問題。我有腳本,我想確保在腳本被調用時輸入的參數與腳本內的變量名稱匹配。Bash腳本:greping參數
例如:
./valid富< - 作爲腳本調用
#!/bin/bash
PARAM=$1
VAR=/foo/
if grep -c $PARAM == $VAR
then
echo yes
fi
echo no
我用grep具有最糟糕的時候,我不知道如何正確使用它的內部腳本和淘寶互聯網之後,我想我需要一些關於我的問題的具體反饋。
感謝,
EA
這是我的問題。我有腳本,我想確保在腳本被調用時輸入的參數與腳本內的變量名稱匹配。Bash腳本:greping參數
例如:
./valid富< - 作爲腳本調用
#!/bin/bash
PARAM=$1
VAR=/foo/
if grep -c $PARAM == $VAR
then
echo yes
fi
echo no
我用grep具有最糟糕的時候,我不知道如何正確使用它的內部腳本和淘寶互聯網之後,我想我需要一些關於我的問題的具體反饋。
感謝,
EA
這並不強勁,但你可以這樣做:
if echo "$VAR" | grep -q "$PARAM"; then
它可能是更好地簡單地做:
if test "$VAR" = "$PARAM"; then
如果你是試圖匹配正則表達式,bash允許:
if [[ "$VAR" =~ "$PARAM" ]]; then
匹配固定字符串$VAR
與正則表達式$PARAM
。如果$VAR
是正則表達式,則應該顛倒參數的順序。 (也就是說,[[ "$PARAM" =~ "$VAR ]]
)
可能需要'[[$ PARAM =〜$ VAR]]' - 看起來像$ VAR是模式。 – 2013-02-25 21:37:48
@EricAnderson,在這裏請注意'$ VAR'應該是'「foo」'(沒有斜槓) – 2013-02-25 21:38:28
也許'[[「$ PARAM」=〜$ VAR]] - PARAM可能需要引用,VAR不能如果它應該是一個正則表達式,則被引用。 – William 2013-02-25 21:41:45
你可以在你的腳本中進行搜索,因爲該聲明是在名稱後面加上一個等號:
if egrep "^\s*$PARAM=" $0 then echo yes else echo no fi
列出變量使用
set -o posix ; set
的POSIX thingie阻止功能列表。
爲了分離參數本地腳本,從shell中運行它,並存儲結果,然後 從腳本運行和比較輸出
(set -o posix ; set) >/tmp/variables.before
(set -o posix ; set) >/tmp/variables.after
你確定你需要的grep?爲什麼不''如果[「$ PARAM」==「$ VAR」]' – ryanbwork 2013-02-25 21:17:42
Eric,這應該是完全匹配還是正則表達式匹配? – 2013-02-25 21:39:15