0

もともと: IF grep は何を探しているかを見つけます do X else Yしかし、元の質問には回答がありました。

$@ の値は "Load firefox/3.6.12" です

var1=$(echo "$@" | grep -Eio '\s\w*') # Gets the application name and put it into var1
echo $var1   # is not printed should be "firefox"
var2=$(echo "$@" | grep -o '[^/]*$')  # Gets version name and put it into var2 
echo $var2 # prints fine

正規表現は問題ありません。何かを変更する前に、以前は機能していました

編集:何か問題があります

var1=$(echo "$@" | grep -Eio '\s\w*') #expected result is: firefox

私が使用する場合、私は正常に動作します

var1="firefox"

ある点で何かを変更したに違いありません。

編集:ソリューション

echo "Load firefox/6.12.3" | awk ‘{print $2}’ | cut -f1 -d”/”

grep は使用されなくなりました。

4

1 に答える 1

0

実行する前に検索をエコーアウトしてみてください - var1 var2 のテキストをトリミングする必要があるようです

echo "find /app/$var1 -noleaf -maxdepth 1 -type l -o -type d | grep $var2"

if find /app/$var1 -noleaf -maxdepth 1 -type l -o -type d | grep $var2; then

/app/ firefox -noleaf -maxdepth 1 -type l -o -type d |を検索します。grep 3.6.12

だから試してください:

var1=${var1//[[:space:]]}
var2=${var2//[[:space:]]}
if find /app/$var1 -noleaf -maxdepth 1 -type l -o -type d | grep $var2; then
于 2012-10-23T10:50:49.593 に答える