В дополнение к приведенным выше решениям, вы всегда можете использовать трубы со смолой:
pbzip2 -dc FILE.tar.bz2 | tar -tvfW -
-121--38572- Я считаю, что проблема заключается в том, что вы используете как test
, так и [[
test "$(read -p 'Install gtodo? ' R ; echo $R)" = "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")
-121--199129- либо пишете test < expression >
, либо
В вашем случае я бы даже заменил читать
перед тестом
, чтобы сохранить выражение коротким:
read -p 'Install gtodo? ' R; test "$R" == "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")
Но оно примет только «Y» в качестве положительного ответа. Если вы измените его на:
read -p 'Install gtodo? ' R; [ "$R" == "Y" ] || [ "$R" == "y" ] && (sudo apt-get install gtodo) || (echo "gtodo not installed")
Он примет и «Y» и «y» как положительный ответ.
Esto parece funcionar en BSDsed
:
$ echo -e "foo bar\nfoo\nbar" | sed -n '/foo/{/bar/p;}'
foo bar
Al igual que dos capas de anidamiento:
$ echo -e "foo bar\nfoo\nbar" | sed -n '/foo/{/bar/{p;};}'
foo bar
Un comando de edición sed
debe terminar con ;
o una nueva línea literal. GNU sed
es muy indulgente con esto.
Su guión:
/foo/{/bar/{;p;}}
Ampliado:
/foo/{
/bar/{
p
}
}
Esto funcionaría como un script sed
alimentado a sed
a -f
.
Si nos aseguramos de reemplazar las nuevas líneas con;
(solo necesario al final de los comandos y {...}
grupos de comandos )para que podamos usarlo en la línea de comando, obtenemos
/foo/{/bar/{p;};}
Esto funciona con OpenBSDsed
(el original no, debido a que falta ese segundo ;
).
En este caso particular, esto puede simplificarse aún más a
/foo/{/bar/p;}