最初来自:IF grep finds what it is looking fore 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。
答案 0 :(得分: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
find / 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