Soy nuevo en las secuencias de comandos de Shell y me quedé con esto: probé esta cláusula if:
if [ unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$ ]; then... No funciona, así que probé esta salida de depuración: no obtengo salida para $grep_output :
$grep_output = unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$"Si ejecuto esto directamente en el shell, funciona sin problemas:
unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$¿Dónde está mi error? ¡Gracias de antemano!
Retire los corchetes; estos no son parte de la sintaxis de la declaración if , sino una forma alternativa de invocar el comando de test , generalmente para usar un operador binario:
if unrar l "$filename" | grep -P "\.(?:r\d\d|r\d\d\d|.rar)$"; then... fi