Disons que je veux exécuter une commande via Bash comme ceci: /bin/bash -c "ls -l" Selon la page de manuel de Bash, je pourrais également l'exécuter comme ceci: # don't process arguments after this one # | pass all unprocessed arguments to command # | | # V V /bin/bash …
En utilisant findavec grep, on peut localiser les fichiers qui correspondent à un modèle: # find | grep error ./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html ./error_log ./includes/classes/error_log Cependant, en utilisant findseul le premier fichier est introuvable: # find . -name error* ./error_log ./includes/classes/error_log Pourquoi ne trouve-t-il pas findle errors.htmlfichier lorsqu'il n'est pas utilisé avec grep? …
J'ai un script qui lit un flux de texte et génère un fichier de commandes sed qui est ensuite exécuté avec sed -f. Les commandes sed générées sont comme: s/cid:image002\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1922/g s/cid:image003\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1923/g s/cid:image004\.jpg@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1924/g Supposons que le script qui génère les sedcommandes ressemble à: while read cid fileid do cidpat="$(echo $cid | …
Une réponse StackOverflow avec> 3,5 K votes présente cette ligne unique pour l'attribution au DIRrépertoire du script bash actuel: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" Je suis perplexe devant les guillemets imbriqués. Pour autant que je sache, les fragments suivants sont entre guillemets: "$( cd " "${BASH_SOURCE[0]}" …
J'utilise sed pour trouver et remplacer des modèles dans les fichiers SAS que j'ai plutôt que de les modifier individuellement. Le problème est que j'essaie de remplacer les variables de macro et que lorsque j'utilise l'esperluette, il ne fonctionne pas correctement. Here's my code: sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas chaque fois …
Je veux attribuer dynamiquement des valeurs aux variables en utilisant eval. L'exemple factice suivant fonctionne: var_name="fruit" var_value="orange" eval $(echo $var_name=$var_value) echo $fruit orange Cependant, lorsque la valeur de la variable contient des espaces, evalrenvoie une erreur, même si elle $var_valueest placée entre guillemets doubles: var_name="fruit" var_value="blue orange" eval $(echo $var_name="$var_value") …
J'ai défini certaines variables d'environnement dans mon .profile comme ceci: MY_HOME="/home/my_user" mais la variable ne semble pas évaluer à moins que je supprime les guillemets et que je ne ressource le fichier. Je crois que les guillemets sont nécessaires s'il y aura des espaces, et des guillemets simples sont utilisés …
J'ai lu que je devrais citer des variables en bash, par exemple "$ foo" au lieu de $ foo. Cependant, lors de l'écriture d'un script, j'ai trouvé un cas où cela fonctionne sans guillemets mais pas avec eux: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX …
La règle générale dans les scripts shell est que les variables doivent toujours être citées sauf s'il existe une raison impérieuse de ne pas le faire. Pour plus de détails que vous ne voudriez probablement en savoir, jetez un œil à ce grand Q&R: implications de sécurité d'oublier de citer …
Ce post contient en fait deux questions distinctes, mais je pense que les regrouper donnera un peu plus de contexte. J'ai parcouru cette question sur les citations autour des variables mais je ne comprends pas très bien ce que signifie l' expansion des variables en premier lieu. Ma première question …
Dans la section 3.1.2.3 intitulée Double Quotes, le manuel Bash dit: Le fait de placer des caractères entre guillemets doubles ('"') préserve la valeur littérale de tous les caractères entre guillemets, à l'exception de '$', '' ',' \ 'et, lorsque l'expansion de l'historique est activée,'! '. Pour le moment, je …
Il est grand temps de résoudre cette énigme qui me dérange depuis des années ... Je l'ai rencontré de temps en temps et j'ai pensé que c'était la voie à suivre: $(comm "$(arg)") Et j'ai pensé que mon point de vue était fortement soutenu par l'expérience. Mais je n'en suis …
Aujourd'hui, je suis rentré du travail (exécuter bash sur une boîte Ubuntu) et j'ai essayé d'exécuter du code sur ma boîte d'archive locale avec mon bien-aimé zsh et les commandes échouaient? La commande est ci-dessous avec les informations personnelles et l'ip changé évidemment ffmpeg -i rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 -threads 3 -vcodec copy …
J'essaie d'invoquer un script avec une liste de noms de fichiers collectés par find. Rien de spécial, juste quelque chose comme ça: $ myscript `find . -name something.txt` Le problème est que certains des chemins d'accès contiennent des espaces, ils sont donc divisés en deux noms invalides lors de l'expansion …
J'utilise GNU bash 4.3.48. Considérez les deux commandes suivantes qui ne diffèrent que par un seul signe dollar. Commande 1: echo "(echo " * ")" Commande 2: echo "$(echo " * ")" Leur sortie est, respectivement, (echo test.txt ppcg.sh ) et * Donc, évidemment, dans le premier cas, le *est …
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.