Eu estou lutando para encontrar alguma maneira de expressar isso de alguma outra forma que trará a saída apropriada:
var="$(ls /var/run/ | grep searchterm | awk {'NR == 2'})"
Eu vi em lugares como shellcheck para usar um glob ou loop, mas a minha pesquisa até agora não veio com nada para fazer isso para que eu possa obter o resultado como uma variável, em vez de apenas ecoar ou imprimir o conteúdo.
Existem métodos para fazer isso?
NR == 2
? (2) Se você usaawk
, você deve colocar oawk
programa inteiro entre aspas; por exemplo,'{NR == 2}'
com as chaves dentro das aspas.Respostas:
Claro,
man find
para aprender algumas limitações da-iregex
opção.Se o searchterm não for muito complexo, você poderá usar em seu
-iname "*$SEARCHTERM*"
lugar.Em geral, analisar a saída
ls
é algo que você realmente deve evitar.fonte
Se a sua situação é
então tudo que você precisa fazer é
Se você está apenas trabalhando no diretório atual, e você faz
e o quarto nome de arquivo pode começar com um
-
traço, o acima pode falhar. (Além disso, qualquer um dos comandos acima pode falhar se o nome do arquivo puder conter\
(barra invertida).)ou
Deveria trabalhar.
Obviamente, se o quarto nome de arquivo começar com um
.
(ponto), você terá outro problema.fonte