2016-03-15 183 views
0

我正在編寫使用文件的shell腳本。我需要找到文件併爲我打印一些重要的信息。多數民衆贊成沒問題......但是,我想添加一些「功能」,並使其與參數一起工作。其中一項功能是忽略一些與patterm匹配的文件(如* .c - 忽略所有c文件)。所以我設置了變量並添加了字符串。變量作爲shell命令

#!/bin/sh 
command="grep -Ev \"$2\"" # in 2nd argument is pattern, that will be ignored 
echo "find $PWD -type f | $command | wc -l" # printing command 
file_num=$(find $path -type f | $command | wc -l) # saving number of files 
echo "Number of files: $file_num" 

但是,命令以某種方式忽略我的變量並計算所有文件。但是,當我將相同的命令放入bash或shell時,我得到不同數量(正確的)文件。我雖然,它可能只是bash的,但在其他機器上,ksh在哪裏,同樣的問題和#!/bin/sh#!/bin/bash也沒有幫助。

+0

參見[此FAQ](http://mywiki.wooledge.org/BashFAQ/050)。 –

+0

reg的價值是什麼? –

+0

@AliissA有souhld是$命令,對不起... – Tehryn

回答

0

包含參數的命令行在執行前由shell處理。因此,當您運行腳本時,該命令將爲grep -Ev "c",並且當您運行單個命令grep -Ev "c"時,shell會將此命令解釋爲grep -Ev c。您可以使用此命令來檢查它:echo grep -Ev "c"。 所以,只要刪除$命令報價,一切都會好起來)

+0

你救了我的命,謝謝bro:D – Tehryn

0

你只需要修改指令值:

command="grep -Ev "$1 
相關問題