AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-210789

Curious Sam's questions

Martin Hope
Curious Sam
Asked: 2018-08-04 01:35:06 +0800 CST

Como formatar as últimas 3 colunas de um arquivo começando na 30ª guia ou 88º espaço

  • 1

Ubuntu 16.04 GNU bash, versão 4.4.0

Gostaria de formatar este arquivo de texto arquivado com CEPs contendo 1.264.524 linhas.

#!/bin/bash

wget http://download.geonames.org/export/zip/allCountries.zip
unzip allCountries.zip
mv -f allCountries.txt .allCountries.txt
rm -f allCountries.zip

Esta é uma seção do arquivo não formatada.

AD AD100 Canillo                    42.5833  1.6667   6
AD AD200 Encamp                     42.5333  1.6333   6
AD AD300 Ordino                     42.6  1.55  6
AD AD400 La Massana                    42.5667  1.4833   6
AD AD500 Andorra la Vella                    42.5  1.5   6
AD AD600 Sant Julià de Lòria                    42.4667  1.5   6
AD AD700 Escaldes-Engordany                     42.5  1.5667   6
AR 3636  POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S))  Salta A              -23.4933 -61.9267 3
AR 4123  LAS SALADAS Salta A              -25.7833 -64.5 4
AR 4126  BARADERO Salta A              -26.0833 -65.263  3
AR 4126  EL CUIBAL   Salta A              -26.0833 -65.263  3
AR 4126  LA ASUNCION Salta A              -26.0833 -65.263  3
AR 4126  MIRAFLORES (TALA, DPTO. CANDELARIA) Salta A              -26.0833 -65.263  3
AR 4141  TOLOMBON Salta A              -26.2 -65.9167 4
AR 4141  QUISCA GRANDE  Salta A              -26.4367 -65.97   3
AR 4141  LA CIENEGUITA  Salta A              -26.4367 -65.97   3
AR 4141  MACHO RASTROJO Salta A              -26.4367 -65.97   3
AR 4190  ROSARIO DE LA FRONTERA  Salta A              -25.8 -64.9667 4
AR 4190  OVANDO   Salta A              -25.8 -65.1 4
AR 4190  SAN ESTEBAN Salta A              -25.8 -65.0333 3
AR 4190  LA BANDA (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA)  Salta A              -25.8 -65.0333 3
AR 4190  LA MATILDE  Salta A              -25.8 -65.0333 3
AR 4190  LAS PIEDRITAS  Salta A              -25.8 -65.0333 3
AR 4190  LOS POCITOS Salta A              -25.8 -65.0333 3
AR 4190  OJO DE AGUA (ROSARIO DE LA FRONTERA, DPTO. R.DE LA FRONTERA)   Salta A              -25.8 -65.0333 3
AR 4190  POTRERILLO (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA)   Salta A              -25.8 -65.0333 3

Este deve ser o resultado final:

AD AD100 Canillo                                                                          42.5833     1.6667      6
AD AD200 Encamp                                                                           42.5333     1.6333      6
AD AD300 Ordino                                                                           42.6        1.56        6
AD AD400 La Massana                                                                       42.5667     1.4833      6
AD AD500 Andorra la Vella                                                                 42.5        1.6         6
AD AD600 Sant Julià de Lòria                                                              42.4667     1.5         6
AD AD700 Escaldes-Engordany                                                               42.5        1.5667      6
AR 3636  POZO CERCADO (EL CHORRO (F), DPTO. RIVADAVIA (S))  Salta A                       -23.4933    -61.9267    3
AR 4123  LAS SALADAS Salta A                                                              -25.7833    -64.5       4
AR 4126  BARADERO Salta A                                                                 -26.0833    -65.263     3
AR 4126  EL CUIBAL   Salta A                                                              -26.0833    -65.263     3
AR 4126  LA ASUNCION Salta A                                                              -26.0833    -65.263     3
AR 4126  MIRAFLORES (TALA, DPTO. CANDELARIA) Salta A                                      -26.0833    -65.263     3
AR 4141  TOLOMBON Salta A                                                                 -26.2       -65.9167    4
AR 4190  OJO DE AGUA (ROSARIO DE LA FRONTERA, DPTO. R.DE LA FRONTERA)   Salta A           -25.8       -65.0333    3
AR 4190  POTRERILLO (R. DE LA FRONTERA, DPTO. ROSARIO DE LA FRONTERA)   Salta A           -25.8       -65.0333    3

Portanto, a 30ª tabulação ou 88 espaços da esquerda da 3ª à última coluna deve começar. O primeiro caractere nas últimas 3 colunas está separado por 12 espaços.

Cada linha tem dados, então tentei cortar as últimas 3 colunas em outro arquivo. Então tentei remover todos os espaços em branco do arquivo original e formatá-lo em colunas. A terceira coluna me dá problemas porque se não

awk 'BEGIN{ OFS="\t"}{ print $1, $2, NR }' .allCountries.txt

AT      4873    Pehigen 34069
AT      4873    Hofberg 34070
AT      4873    Wiederhals      34071
AT      4873    Oberedt 34072
AT      4873    Oberegg 34073
AT      4873    Raitenberg      34074
AT      4873    Redltal 34075
AT      4873    Friedhalbing    34076
AT      4873    Unterhaselbach  34077
AT      4873    Redltal 34078
AT      4873    Erkaburgen      34079
AT      4873    Mayrhof 34080
AT      4873    Erdpries        34081
AT      4873    Grünbergsiedlung        34082
AT      4873    Brunnhölzl      34083
AT      4873    Seibrigen       34084
AT      4873    Kinast  34085
AT      4873    Stöckert        34086
AT      4873    Frankenburg     34087
AT      4873    Fischeredt      34088
AT      4873    Marigen 34089
AT      4873    Oberhaselbach   34090
AT      4873    Ottokönigen     34091
AT      4873    Fischigen       34092
AT      4873    Endriegl        34093

Qualquer ajuda seria grande.

awk cut
  • 2 respostas
  • 150 Views
Martin Hope
Curious Sam
Asked: 2018-07-18 07:41:09 +0800 CST

Como posso testar se os arquivos de configuração do nginx são válidos em um script Bash?

  • 1
  • Ubuntu 16.04
  • Bash versão 4.4.0
  • versão do nginx: nginx/1.14.0

Como posso testar os arquivos de configuração do Nginx em um script Bash? No momento eu uso -t quando estou em um shell:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Mas eu gostaria de fazer isso em um script?

scripting configuration
  • 2 respostas
  • 4240 Views
Martin Hope
Curious Sam
Asked: 2018-07-13 07:19:47 +0800 CST

Posso grep para 2 padrões e tê-los listados lado a lado?

  • 3

Ubuntu 16.04

bash -version  
GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)

Eu gostaria grepde 2 padrões e, em seguida, tê-los listados lado a lado. No momento, isso é o que eu tenho:

root@tires ~ # grep -e tire_id -e appID /path/to/*/vehicle/production.json
/path/to/000001_000002/vehicle/production.json:    "tire_id": "1305436516186552",
/path/to/000001_000002/vehicle/production.json:        "appID": "1164562920689523",
/path/to/000001_000079/vehicle/production.json:    "tire_id": "1815123428733289",
/path/to/000001_000079/vehicle/production.json:        "appID": "18412365908966538",
/path/to/000001_000088/vehicle/production.json:    "tire_id": "138477888324",

Isso é o que eu gostaria de ter, embora qualquer coisa semelhante funcione na verdade.

root@tires ~ # grep -e tire_id -e appID /path/to/*/vehicle/production.json
/path/to/000001_000002/vehicle/production.json:    tire_id: 1305436516186552, appID: 1164562920689523
/path/to/000001_000079/vehicle/production.json:    tire_id: 1815123428733289, appID: 18412365908966538

Exemplo de arquivo aqui:

{
    "socal": "https://xxx.xxxxx.xxx",
    "ip": "xxx.xxx.xxx.xxx",
    "tire_id": "213275925375485",
    "client": {
        "platform": "xx",
        "clientID": "xxxxx",
        "serviceID": "xxxxx",
        "service_id": XXXX,
        "vendor": "default"
    },
    "locale": "en_US",
    "cdc": {
        "appID": "233262274090443",
        "isdel": "ORdiZBMAQS2ZBCnTwZDZD",
    },
    "attachments": {
        "output": "attachments",
        "public": false,
    },
}
grep json
  • 4 respostas
  • 2078 Views
Martin Hope
Curious Sam
Asked: 2018-07-05 17:45:31 +0800 CST

encontre e compacte várias extensões de arquivo enquanto mantém a estrutura de pastas

  • 1

Ubuntu 16.04

Eu gostaria de fazer backup de todos os arquivos .txt, .cfg e .ini, mantendo sua estrutura de pastas em um arquivo zip na pasta de backups.

Eu sei que há uma maneira mais fácil de fazer toda essa operação, mas é isso que eu tenho.

#!/bin/bash

wdir="/home/files"
backup_dir="/home/files/backup"
allcfg=$(find suan -name '*.cfg')
alltxt=$(find suan -name '*.txt')
allini=$(find suan -name '*.ini')
timeStamp="$(date +%Y--%b-%d--%k:%M--%P)"
backupfilename="${backup_dir}/Backup-${timeStamp}.zip"

#-- set some arrays ...
backupfiles=( "$allcfg" "$alltxt" "$allini" )

cd "$wdir"
zip -r "$backupfilename" "$backupfiles"

Então, eu posso ver uma boa saída dos arquivos que ele arquiva, mas quando chega à parte de compactação, ocorre um erro.

zip error: Nothing to do! (try: zip -r /home/files/backup/Backup-2018--Jul-04--21:37--pm.zip . -i suan/cfg/360controller.cfg

Mas isso também não funciona.

bash find
  • 2 respostas
  • 2203 Views
Martin Hope
Curious Sam
Asked: 2018-06-16 17:49:47 +0800 CST

Como excluir o primeiro valor e a vírgula à direita da 7ª coluna em um arquivo csv

  • 2

Estou tentando remover o primeiro valor da 31ª coluna em um arquivo csv. As colunas estão entre aspas e separadas por vírgulas assim.

"first_name","last_name","home_address"
"Frank",Russel","123 Hampton road"

a 31ª coluna é a coluna da imagem e as imagens são separadas por vírgulas

"http://ddd.com/124dfr3f.jpg,http://ddd.com/hjasgx37trg.jpg"

A primeira imagem e a vírgula final devem ser removidas da 31ª coluna

Adicionado - Aqui está um exemplo.

"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","three","four","five","six","seven","eight","nine","ten","twenty-one","twenty-two","three","four","five","six","seven","eight","nine","ten","thirty-one","thirty-two","three","four","five","six","seven","eight","nine","forty"
"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","three","four","five","six","seven","eight","nine","ten","twenty-one","twenty-two","three","four","five","six","seven","eight","nine","http://pictures.domain.com/e/josequervo/1183/eeeffcc7927sssssssssss5d26c0eb19e1dc53548x.jpg","http://pictures.domain.com/e/josequervo/0083/eeef8cc7927bf1245d26c0eb19e1dc53545x.jpg,http://pictures.domain.com/e/josequervo/0099/eeefscc7927bf1245d26c0eb19e1dc53546x.jpg,http://pictures.domain.com/e/josequervo/0012/eeefdcc7927bf1245d26c0eb19e1dc53547x.jpg,http://pictures.domain.com/e/josequervo/1183/eeeffcc7927bf1245d26c0eb19e1dc53548x.jpg,http://pictures.domain.com/e/josequervo/1234/eeefgcc7927bf1245d26c0eb19e1dc53549x.jpg,http://pictures.domain.com/e/josequervo/asee/eeefhcc7927bf1245d26c0eb19e1dc53540x.jpg,http://pictures.domain.com/e/josequervo/2341/eeefjcc7927bf1245d26c0eb19e1dc53544x.jpg","two",three","four","five","six","seven","eight","nine","forty"

Este URL e vírgula devem ser removidos

http://pictures.domain.com/e/josequervo/0083/eeef8cc7927bf1245d26c0eb19e1dc53545x.jpg,

Eu postei apenas as 2 primeiras linhas do arquivo csv, mas o arquivo tem 300 - 400 linhas e esta imagem deve ser removida da linha 2 até a última linha. Não podemos alterar a primeira linha.

text-processing sed
  • 2 respostas
  • 563 Views
Martin Hope
Curious Sam
Asked: 2018-06-15 13:32:26 +0800 CST

Usando `pgrep` para emular `ps -ef` para uso em um loop `for i in`

  • 0

Ubuntu 16.04

Estou acostumado a usar esta linha de comando para matar qualquer correspondência de processo dita COMMAND

for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done

shellcheck não gosta muito e sugere

root@singa /home # shellcheck run

In run line 4:
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
           ^-- SC2009: Consider using pgrep instead of grepping ps output.

quais são os sinalizadores necessários para concluir isso aqui substituindo o XXX

for i in $(pgrep XXX | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done

Eu já verifiquei a página de manual do pgrep.

shell command
  • 2 respostas
  • 1545 Views
Martin Hope
Curious Sam
Asked: 2018-04-23 14:14:43 +0800 CST

Usando seq e math para manipular o último octeto em um endereço IP para criar um arquivo

  • 0

Ubuntu 16.04 GNU bash, versão 4.3.48(1)-release (x86_64-pc-linux-gnu)

Temos que adicionar ips aos servidores algumas vezes ao dia. Eu me pego criando diferentes variações do mesmo arquivo de acordo com o bloco ip.

#-- 100.100.100.160/29 - Sun 04/22/18 02-38-pm
#-- -----------------------------------------
auto eth0:0
iface eth0:0 inet static
    address 100.100.100.160
    netmask 255.255.255.255

auto eth0:1
iface eth0:1 inet static
    address 100.100.100.161
    netmask 255.255.255.255

auto eth0:2
iface eth0:2 inet static
    address 100.100.100.162
    netmask 255.255.255.255

auto eth0:3
iface eth0:3 inet static
    address 100.100.100.163
    netmask 255.255.255.255

auto eth0:4
iface eth0:4 inet static
    address 100.100.100.164
    netmask 255.255.255.255

auto eth0:5
iface eth0:5 inet static
    address 100.100.100.165
    netmask 255.255.255.255

auto eth0:6
iface eth0:6 inet static
    address 100.100.100.166
    netmask 255.255.255.255

auto eth0:7
iface eth0:7 inet static
    address 99.100.100.167
    netmask 255.255.255.255

Então pensei em criar um script para chegar o mais próximo possível desse arquivo, então escrevi um script e aqui está uma parte dele ...

#!/bin/bash
#
#-- bash add_ips.sh "eth0" "100.100.100.160" "255.255.255.255" "29"

wDir="/scripts/tools/ips"
ifaceFile="/etc/network/interfaces"
ipFile="${wDir}/ipFile.txt"
nic="${1}"
address="${2}"
netmask="${3}"
block="${4}"
timeStamp="$(date '+%a %D %I-%M-%P')"

if [ ! -n "$4" ]; then
   echo 'add_ips.sh nic address mask block ...';
   exit 1;
fi

#-- echo the address block on a header line
{
   echo "";
   echo "#-- IP Block ${address}/${block} - ${timeStamp}";
   echo "#-- ----------------------------------------------";
} > "$ipFile"

#-- If a 30/block
if [[ "$block" == "30" ]]; then
   start="0"
   end="3"
   for ipnum in $(seq "$start" "$end"); do
      {
         echo "auto ${nic}:${ipnum}";
         echo "iface ${nic}:${ipnum} inet static";
         echo -e "\t address ${address}";
         echo -e "\t netmask ${netmask}";
         echo "";
      } >> "$ipFile"
   done

A saída foi próxima do que eu procurava e só faltava alterar o último número do endereço IP.

#-- 100.100.100.160/29 - Sun 04/22/18 02-38-pm
#-- -----------------------------------------
auto eth0:0
iface eth0:0 inet static
    address 100.100.100.160
    netmask 255.255.255.255

auto eth0:1
iface eth0:1 inet static
    address 100.100.100.160
    netmask 255.255.255.255

auto eth0:2
iface eth0:2 inet static
    address 100.100.100.160
    netmask 255.255.255.255

Como posso alterar o último octeto do endereço IP ao adicionar o valor $ seq do loop atual nessa linha?

eu tentei isso

#-- If a 30/block
if [[ "$block" == "30" ]]; then
   start="0"
   end="3"
   for ipnum in $(seq "$start" "$end"); do
      ipaddress=$(expr "$address" + "$ipnum")
      {
         echo "auto ${nic}:${ipnum}";
         echo "iface ${nic}:${ipnum} inet static";
         echo -e "\t address ${ipaddress}";
         echo -e "\t netmask ${netmask}";
         echo "";
      } >> "$ipFile"
   done
fi

O endereço não é um número inteiro, por isso falha.

bash scripting
  • 1 respostas
  • 579 Views
Martin Hope
Curious Sam
Asked: 2018-04-17 14:36:44 +0800 CST

Ecoar argumentos para um arquivo de log formatado com aspas duplas ao redor dos argumentos

  • 3

Ubuntu 16.04

Estou querendo ecoar o comando original em um arquivo de log. Meu arquivo de log deve ser algo como isto:

Mon 04/16/18 04-24-pm - Executing command: sudo /home/editini.sh "one" "two" "three" "four" "five" "six"

Qual seria a maneira mais fácil de fazer isso enquanto satisfazia a verificação ortográfica ao mesmo tempo.

#!/bin/bash


hello="${1}"
my="$2"
friend="$3"
are="$4"
you="$5"
safe="$6"
timeStamp="$(date '+%a %D %m-%S-%P')"

rm -rf report*; touch report.txt;
{
   echo "$timeStamp - Executing command: sudo /home/editini.sh \"$hello\" \"$my\" \"$friend\" \"$are\" \"$you\" \"$safe\""
   echo ""
   echo "$timeStamp" -  Executing command: sudo /home/editini.sh "$*"
   echo "";
   echo "$timeStamp" -  Executing command: sudo /home/editini.sh \""$*"\"
   echo "";
} > report.txt
cat report.txt

Não posso ir com a primeira linha porque teria que conhecer os argumentos antes do tempo.

Isso é o que o console diz quando executo os comandos acima.

root@me /home/scripts/vent-commands # sh one.sh one two three four five six
Mon 04/16/18 04-05-pm - Executing command: sudo /home/editini.sh "one" "two" "three" "four" "five" "six"

Mon 04/16/18 04-05-pm - Executing command: sudo /home/editini.sh one two three four five six

Mon 04/16/18 04-05-pm - Executing command: sudo /home/editini.sh "one two three four five six"
bash shell
  • 3 respostas
  • 364 Views
Martin Hope
Curious Sam
Asked: 2018-04-03 10:48:39 +0800 CST

Digite Y para Excluir, se o script estiver sendo executado manualmente

  • 1

Esta é uma pergunta de 2 partes.

Cenário: Este script está em um cronjob. Caso não exista uma pasta, o sistema nos envia um e-mail que abre um ticket que nos avisa que a pasta não está disponível. Temos que fazer login manualmente e remover a pasta anterior atm.

Eu gostaria que pudéssemos executar o script manualmente e remover a pasta anterior pressionando "Y" ou continuar pressionando a tecla "Enter", enquanto estamos logados e executamos o script manualmente.

Isso é o que eu tenho até agora...

   #-- check to see if cache folder exists
   { echo "Checking to see if ...";
   echo "${wDir}/${client%/}/.ftp-vendor-scripts/cache exists ... "; echo ""; } >> "$log"

   if [ ! -d "${wDir}"/"${client%/}"/.ftp-vendor-scripts/cache ]; then
      echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache DOES NOT exists - Failed ..." >> "$log";

      if [ ******** this script is being executed manually ******* ]; then
         echo "Would you like to delete the ${wDir}/${client%/}/.ftp-vendor-scripts folder?"
         echo "Press \"Y\" to delete the ${wDir}/${client%/}/.ftp-vendor-scripts."
         echo "Press \"Enter\" to continue without deleting the .ftp-vendor-scripts folder."
      else
         echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache DOES NOT exists - Failed ..." | mail -s "${wDir}/${client%/}/.ftp-vendor-scripts/ca$
      fi

   else
      echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache exists - Success ..." >> "$log";
   fi
bash scripting
  • 1 respostas
  • 85 Views
Martin Hope
Curious Sam
Asked: 2018-04-01 11:21:32 +0800 CST

Como construir uma comparação que resultaria em um novo md5sum se as condições fossem atendidas

  • 1

Ubuntu 16.04 - tentando ajustar

Aqui está o meu código

#!/bin/bash

# if the .md5sum file doesn't exists
# or if the .md5sum file exists && doesn't match, recreate it
# but if the .md5sum file exists && matches then break and log

csvfile=inventory.csv

if [ ! -f .md5sum ] || [ -f .md5sum ] && [ ! md5sum -c .md5sum >/dev/null ]; then
   md5sum "$csvfile" > .md5sum
else
   echo "$csvfile file matched md5sum ..."
   break
fi

Estou tendo problemas para criar a instrução condicional que resultaria em um novo .md5sum. Estou tentando descobrir qual parte da declaração condicional está errada e é isso que o shellcheck me diz.

root@me ~ # shellcheck run.sh

In run.sh line 8:
if [ ! -f .md5sum ] || [ -f .md5sum ] && [ ! md5sum -c .md5sum >/dev/null ]; then
^-- SC1009: The mentioned parser error was in this if expression.
                                         ^-- SC1073: Couldn't parse this test expression.
                                                               ^-- SC1072: Expected "]". Fix any mentioned problems and try again.

Posso fazer todo o processo com algumas comparações, mas acho que conseguirei um script mais rápido e limpo se juntar as comparações.

Eu também verifiquei o código por Jesse_P

#!/bin/bash

csvfile=inventory.csv

echo "hello" > inventory.csv
md5sum "$csvfile" > .md5sum
echo "well hello" > inventory.cvs

if [[ ! -f .md5sum ]] || [[ -f .md5sum && ! md5sum -c .md5sum >/dev/null ]]; then
        echo "All conditiions have been met to generate a new md5sum for inventory.csv ..."
        md5sum inventory.csv > .mds5sum
fi
exit 0

Então eu usei shellcheck

root@0003 ~ # shellcheck run.sh
    In run.sh line 8:
    if [[ ! -f .md5sum ]] || [[ -f .md5sum && ! md5sum -c .md5sum >/dev/null ]]; then
    ^-- SC1009: The mentioned parser error was in this if expression.
                             ^-- SC1073: Couldn't parse this test expression.
                                                                  ^-- SC1072: Expected "]". Fix any mentioned problems and try again.
shell-script
  • 1 respostas
  • 295 Views
Martin Hope
Curious Sam
Asked: 2018-03-24 06:50:51 +0800 CST

Como remover a barra final de uma variável que define um diretório de uma saída de teste de tempo

  • 2

Ubuntu 16.04

Mesmo que a saída de for client in */; donão produza uma barra final, a barra final aparecerá se eu repetir a variável $client ao executar um teste de tempo no arquivo, dentro do loop.

cd "$wDir"
for client in */; do
   cd "$wDir"/"$client";

   #-- check to see if any .csv files exists
   if ls *.csv &>/dev/null; then
      for csvfile in *.csv; do
         if test $(find "$csvfile" -mmin +2880); then
            echo "$client has files older than 2 days ..." >> "staleFtpAccts"
         fi
      done
   fi
done

Quando executo o script, um / é colocado após a variável $client da seguinte forma:

root@me /home/frank # bash script.sh
Start ...
000029_000020/ has files older than 2 days ...
#--
Finished ...

Start ...
000033_000040/ has files older than 2 days ...
#--
Finished ...

Start ...
000033_000041/ has files older than 2 days ...
#--
Finished ...

Start ...
000033_000042/ has files older than 2 days ...
#--
Finished ...

Start ...
000033_000043/ has files older than 2 days ...
#--
Finished ...

Esse é o resultado que estou atrás...

root@me /home/frank # bash script.sh
Start ...
000029_000020 has files older than 2 days ...
#--
Finished ...

Start ...
000033_000040 has files older than 2 days ...
#--
Finished ...

Start ...
000033_000041 has files older than 2 days ...
#--
Finished ...

Start ...
000033_000042 has files older than 2 days ...
#--
Finished ...

Start ...
000033_000043 has files older than 2 days ...
#--
Finished ...
bash delete
  • 1 respostas
  • 2378 Views
Martin Hope
Curious Sam
Asked: 2018-03-20 02:29:51 +0800 CST

shellcheck avisa sobre loops na saída de localização, mesmo quando é fornecido o caminho para iniciar a pesquisa [duplicado]

  • 4
Esta pergunta já tem respostas aqui :
Por que o loop sobre a saída de find é uma prática ruim? (8 respostas)
Fechado há 4 anos .

Ubuntu 16.04

#!/bin/bash

site="hello"
wDir="/home/websites/${site}/httpdocs/"

for file in $(find "${wDir}" -name "*.css")
do
   echo "$file";
done
exit 0;

shellcheck me avisa mesmo se eu definir o diretório inicial, mas o script funciona bem.

root@me /scripts/ # shellcheck test.sh

In test.sh line 6:
for file in $(find "${wDir}" -name "*.css")
            ^-- SC2044: For loops over find output are fragile. Use find -exec or a while read loop.
bash find
  • 2 respostas
  • 2083 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve