Ho sempre pensato che l'unico vantaggio dell'uso di dash anziché bash fosse che dash era più piccolo, e quindi molte istanze di dash sarebbero iniziate più velocemente all'avvio. Ma ho fatto qualche ricerca e ho trovato alcune persone che migrano tutti i loro script per precipitare nella speranza che corrano …
Ho notato che praticamente nessun sistema con cui abbia mai lavorato ha /bin/shun vero eseguibile. È sempre un collegamento simbolico a dash, bashin modalità POSIX o qualcosa di simile. Perché? Quali sono gli svantaggi dell'utilizzo del vero, originale /bin/sh? (Velocità? Licenze?)
In bash, posso usare Process Substitution e trattare l'output di un processo come se fosse un file salvato su disco: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] sfortunatamente, Sostituzione processo non è supportata in dash. Quale sarebbe il …
Quando si pre / post incrementa una variabile, in POSIX Shell, qual è la differenza tra questi due esempi. Sembrano che avrebbero le stesse conseguenze, ma sarebbero usati diversamente? Quando preferiresti l'uno all'altro? X=$((X+1)) : $((X=X+1))
Il mio $ PATH è simile al seguente: /home/torbjorr/deployed/vector/x86_64-GNU%2fLinux:/home/torbjorr/deployed/typewriter/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mustudio/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mathext/x86_64-GNU%2fLinux:/home/torbjorr/deployed/doxymax/x86_64-GNU%2fLinux:/home/torbjorr/deployed/c2tex/x86_64-GNU%2fLinux:/home/torbjorr/deployed/x86_64-GNU%2fLinux/wand:/home/torbjorr/deployed/x86_64-GNU%2fLinux/spellesc:/home/torbjorr/deployed/x86_64-GNU%2fLinux/projinit:/home/torbjorr/deployed/x86_64-GNU%2fLinux/herbs:/home/torbjorr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games In bash, posso senza problemi invocare la bacchetta situata in /home/torbjorr/deployed/x86_64-GNU%2fLinux/wand piace $ wand (i) Mål från "main.cpp" har registrerats (i) Skapar katalog "__wand_targets_dbg" (i) Kör g++ "main.cpp" -fpic -L"/home/torbjorr/deployed" -g -Wall -std=c++11 -I"/home/torbjorr/deployed" -o "__wand_targets_dbg/cb-template Tuttavia, nella modalità di compatibilità …
Volevo sapere se gli script scritti per dash, ash e sh sono compatibili al 100%? Ci sono funzioni aggiuntive da trattenere o rilasciare o cambiare la sintassi? Da quello che ho sentito, la cenere è un discendente diretto di sh.
In bash: $ type : : is a shell builtin $ type true true is a shell builtin Sembra che siano gli stessi, ma non danno la stessa traccia di sistema: $ strace : strace: :: command not found $ strace true execve("/bin/true", ["true"], [/* 82 vars */]) = 0 …
Nel trattino, le funzioni e le variabili sembrano vivere in spazi dei nomi separati: fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn …
Quale sarebbe il modo migliore per verificare se $ 1 è un numero intero in / bin / dash? In bash, potrei fare: [[ $1 =~ ^([0-9]+)$ ]] Ma questo non sembra conforme a POSIX e il trattino non lo supporta
Il mio dashscript accetta un parametro sotto forma di hostname:port, ovvero: myhost:1234 Considerando che il porto è facoltativo, cioè: myhost Devo leggere l'host e la porta in variabili separate. Nel primo caso, posso fare: HOST=${1%%:*} PORT=${1##*:} Ma ciò non funziona nel secondo caso, quando la porta è stata omessa; echo …
Ho scritto uno script che cambia gli utenti durante l'esecuzione e l'ho eseguito usando il reindirizzamento dei file allo standard in. Così user-switch.shè ... #!/bin/bash whoami sudo su -l root whoami E eseguirlo con bashmi dà il comportamento che mi aspetto $ bash < user-switch.sh vagrant root Tuttavia, se eseguo …
In Bash puoi reindirizzare tutti i futuri output stdout dello script attualmente in esecuzione . Ad esempio con questo script, exec > >(logger -t my-awesome-script) echo 1 echo 2 echo 3 Questo finirà in syslog: Oct 26 01:03:16 mybox my-awesome-script[72754]: 1 Oct 26 01:03:16 mybox my-awesome-script[72754]: 2 Oct 26 01:03:16 …
Ho pubblicato una risposta a una domanda su AU e ho scoperto che l'espansione dei parametri su $@non funziona con la shshell: <infile xargs -d'\n' sh -c 'echo "${@%%/*}"' _ ma funziona benissimo in bash. Questo comportamento previsto della shshell è e come posso eseguire l'espansione lì? Inoltre, so che …
So che alcune shell accettano questo tipo di test: t() { [[ $var == *$'\n'* ]] && res=yes || res=no printf '%s ' "$res"; } var='ab cd' t var='abcd' t echo in esecuzione: $ bash ./script yes no Qual è l'equivalente funzionante POSIX (trattino) Di seguito è un modo affidabile …
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 …
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.