J'ai un fichier contenant une liste de commandes unix comme "ls -la/etc/passwd". Je veux parcourir cette liste de commandes et prendre les mesures appropriées.Itérer dans une liste de commandes dans un fichier dans la programmation du shell
Actuellement, mon code est quelque chose comme:
#!/bin/bash
clear
for cmds in `cat /tmp/cmd`
do
if [ $cmds ] ; then
echo $cmds;
fi
done
Mais, ce que je reçois est une sortie où les commandes sont réparties dans différentes lignes comme
ls
-la
/etc/passwd
ls
-la
/etc/shadow
et non
ls -la /etc/passwd
ls -la /etc/shadow
Des idées?
Votre solution a partiellement fonctionné, mais tous les n ont également été utilisés pour diviser les champs d'entrée.Et, il a donné une sortie incorrecte comme /etc/ssh/sshd_co fig svcs -a | grep etwork etstat -a | grep -i liste Comme vous pouvez le voir tous les n ont été perdus et dénotés incohéremment de nouvelles lignes. – Epitaph
Désolé. Il semble que ma version de Bash interprète \ n dans IFS spécialement; en général, cependant, cela ne fonctionnera pas pour mettre une nouvelle ligne dans une chaîne. J'ai édité ma réponse pour être plus portable; vous pouvez mettre un retour à la ligne littéral dans la chaîne, ou utiliser la citation de style C de Bash. –