Domande specifiche per GNU Bourne Again SHell, al contrario di altre shell Bourne / POSIX. Per domande sulle shell Unix in generale, utilizzare invece il tag / shell.
Ho bisogno di creare un whileciclo che, se dmesgrestituisce qualche / qualsiasi valore, dovrebbe interrompere un determinato processo. Ecco quello che ho. #!/bin/bash while [ 1 ]; do BUG=$(dmesg | grep "BUG: workqueue lockup" &> /dev/null) if [ ! -z "$BUG" ]; then killall someprocessname else break fi done Non …
In bash, un link di comando echo test > actual.txt sostituirà il contenuto del file chiamato actual.txtcon "test" e creerà il file se non esiste. Tuttavia, se il file esiste, bash lo aprirà, lo troncerà e scriverà i nuovi contenuti nel file. In particolare, il comando di reindirizzamento non riesce …
Vorrei elencare tutti i file in una cartella chiamata foldernamecon estensione test, atestoppure btest. Il mio pensiero immediato fu di scappare ls ./foldername/*.{a,b,}test Funziona bene a meno che non ci sia nulla con l'estensione atest, nel qual caso ottengo l'errore zsh: no matches found: ./foldername/*.atest. C'è un modo in cui …
In esecuzione bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' risulta test1essere stampato su console e echo $?stampare ciò 1che a mio avviso è corretto, perché il comando dovrebbe tornare con ciò [b/d]ash -cche è stato restituito dall'interno dash -c 'dash …
Sto usando $((1 + RANDOM % 1000))per generare un numero casuale. È possibile fare qualcosa di simile ma fornire un seme? In modo che dato lo stesso seme verrà sempre prodotto lo stesso numero casuale?
Ho scritto uno script di esempio per dividere la stringa ma non funziona come previsto #!/bin/bash IN="One-XX-X-17.0.0" IFS='-' read -r -a ADDR <<< "$IN" for i in "${ADDR[@]}"; do echo "Element:$i" done #split 17.0.0 into NUM IFS='.' read -a array <<<${ADDR[3]}; for element in "${array[@]}" do echo "Num:$element" done produzione …
Supponiamo di avere un elenco di percorsi di file archiviati in un array filearray=("dir1/0010.pdf" "dir2/0003.pdf" "dir3/0040.pdf" ) Voglio ordinare gli elementi nell'array in base ai nomi di base dei nomi di file, in ordine numerico sortedfilearray=("dir2/0003.pdf" "dir1/0010.pdf" "dir3/0040.pdf") Come lo posso fare? Posso solo ordinare le loro parti del nome …
Voglio scrivere uno script per fare riferimento a più array da un altro array che contiene i nomi delle variabili di questi array. Ecco il mio codice finora: #!/bin/bash array1=('array1string1' 'array1string2') array2=('array2string1' 'array2string2') array_names=('array1' 'array2') for a in ${array_names[@]} do for b in ${a[@]} do echo $b done done Vorrei …
Durante la lettura di esercitazioni su rinominare i file in batch in bash e usando il sortcomando per ordinare i contenuti dei file, non sono stato in grado di capire come combinare i due. Ho una directory i cui contenuti sono ordinati usando i tag all'interno del nome file, simile …
Per un compito mi viene chiesto di scrivere abilmente una funzione bash che ha le stesse funzionalità di base della funzione cp(copia). Deve solo copiare un file in un altro, quindi non più file copiati in una nuova directory. Dato che sono nuovo nella lingua bash, non riesco a capire …
Usando bash sto cercando di interrogare /etc/passwdqualsiasi utente con un ID superiore a 1000. Se esistono, fai qualcosa, altrimenti fai qualcos'altro. Sono perplesso. Qualsiasi aiuto è apprezzato. if [ "$(id -u)" -gt "1000" </etc/passwd]; then do something else do something else fi
Supponiamo che due numeri siano memorizzati in due file diversi a.txte b.txt. Ogni numero è abbastanza grande (più di 30 cifre) per non essere supportato dal tipo di dati numerico utilizzato da bash. Come posso aggiungerli nella shell?
Questa è una domanda a casa: Abbina tutti i nomi di file con 2 o più caratteri che iniziano con una lettera minuscola, ma non terminano con una lettera maiuscola. Non capisco perché la mia soluzione non funzioni. Quindi ho eseguito il seguito: touch aa touch ha touch ah touch …
Per alcune macchine cloud che sto avviando, sto cercando di accedere a un file specifico, a syslog e al terminale / console. Nella parte superiore degli script di installazione / cloud-init della mia macchina, ho quanto segue: #!/bin/bash exec &> >(tee "/tmp/box-setup.log" | logger -t box-setup) apt-get install -y some-package …
Ho ottenuto uno script bash essenzialmente su questo: #!/bin/bash [...] while true; do str="broadcast "`randArrayElement "messages[@]"` server_send_message $str sleep $interval done Ora voglio eseguire questo come un servizio systemd, il mio script di servizio è simile al seguente: [Unit] Description=Announcer After=network.target [Service] ExecStart=/usr/local/bin/somescript &; disown ExecStop=/usr/bin/kill -9 `cat /tmp/somescript.pid` Type=forking …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.