我試圖找出模式的出現的次數與下面的代碼文件:的Linux Shell腳本非法數字
#!/bin/sh
var='grep -c 'abc' file1'
if [ "$var" -lt 10 ]; then
echo "less than 10"
fi
我收到錯誤:非法數字:grep的-c ABC文件1
有人可以請幫忙。
謝謝。
我試圖找出模式的出現的次數與下面的代碼文件:的Linux Shell腳本非法數字
#!/bin/sh
var='grep -c 'abc' file1'
if [ "$var" -lt 10 ]; then
echo "less than 10"
fi
我收到錯誤:非法數字:grep的-c ABC文件1
有人可以請幫忙。
謝謝。
使用反引號(`)而不是單引號('):
#!/bin/sh
var=`grep -c 'abc' file1`
if [ "$var" -lt 10 ]; then
echo "less than 10"
fi
你可能想反引號(`)而不是單引號(')。即:
var=`grep -c 'abc' file1`
你已經使用了單引號,而不是反引號讓你var
變量實際上是設置爲一個字符串字面而不是該命令的結果。你會發現,如果你第一次呼應變量:
pax$ var='grep -c 'abc' file1'
pax$ echo "[$var]"
[grep -c abc file1]
倒引號的版本是:
var=`grep -c 'abc' file1`
,但我想用bash
在可能的腳本建議。你會很難找到一個默認沒有的主流發行版,有些人認爲它比其他發行版更強大。實際上,在一些系統上,/bin/sh
是bash
。
如果你可以去那魯特的$()
結構通常是一個好主意,因爲你可以嵌套它們無痛苦:
var=$(grep -c 'abc' file1)
嘗試發佈以下內容,以獲得更好的答案:
grep --version
bash --version
如果你的shell是Bash或讓我們知道你正在使用哪個shell。[[
在Bash中比[
更通用。最後,我的機器上的以下作品沒有任何錯誤:
#!/bin/bash
var=$(grep -c "abc" file1)
if [[ "$var" -lt 10 ]]
then
echo "less than 10"
fi
執行:
[email protected]:~$ cat file1
abc
abcd
abcde
abcdef
[email protected]:~$
[email protected]:~$ ./t.sh
less than 10
[email protected]:~$