e se eu precisar colocar um “” dentro de um “” no bash shell? [fechadas]

1

Eu tenho um script de shell, no qual há um comando:

if [ -e "./${name}/\"$1\"_page.json" ];

Percebi que, diferente de muitos outros idiomas, o \" não funciona.

O que devo fazer?

    
por AGamePlayer 02.09.2015 / 16:21

2 respostas

3

usar aspas duplas triplas?

    if [ -e "./${name}/"""$1"""_page.json" ];

isso vai

  • substitua ${name} e $1 pelos valores reais.

observe:

archemar@mybox:~/tmp7$ foo=bar
archemar@mybox:~/tmp7$ f2=deux
archemar@mybox:~/tmp7$ echo "${f2}/"""${foo}"""/test.php"
deux/bar/test.php
archemar@mybox:~/tmp7$ echo "${f2}/\"${foo}\"/test.php"
deux/"bar"/test.php

como apontado, o resultado desejado é um pouco incerto.

    
por 02.09.2015 / 16:29
0

Use apenas aspas simples.

if [ -e './${name}/"$1"_page.json' ];

Se você quiser que ${name} e $1 sejam expandidos, não será possível usar aspas simples. Leia este artigo para saber a diferença entre aspas strongs e fracas.

No entanto, se você quiser expandir argumentos, é perfeitamente adequado concatenar strings:

if [ -e './'"${name}"'"'"$1"'"_page.json' ];

Embora muitos caracteres ' tornem isso quase ilegível.

    
por 02.09.2015 / 16:25

Tags