Bash Shell Script: en Utilisant la commande Diff
Quelqu'un peut-il m'aider à comprendre quel est le problème avec ce programme?
#!/bin/bash
find teste1 > names.lst
find teste2 > names2.lst
result=$(diff -y -W 72 $names $names2)
if [ $? -eq 0]; then
echo "files are the same"
else
echo "files are different"
echo "$result"
fi
Il renvoie les erreurs suivantes:
diff: opérande manquant
teste.sh: [: manquant ']'
Fichiers sont différents
(un espace vide apparaît ici)
Le vide de l'espace est la variable "result" mais pourquoi avait-il pas enregistrer les différences entre les 2 fichiers?
Je suis en train d'essayer d'utiliser la commande diff pour trouver les différences dans les textes sur ces deux fichiers.
- Où avez-vous remplir les variables
$names, $names2
? Je suppose que ceux qui sont destinés à êtrenames.lst, names2.lst
mais ce code ne définit pas les variables. - . . .
0]
. . . - Ah, je suppose que ça explique pourquoi il n'est pas assez de travail, alors :/ j'ai changé et déclaré de ces variables avec la valeur des noms.lst et names2.lst MERCI! 😀
Vous devez vous connecter pour publier un commentaire.
En plus de différentiation des variables non définies $noms $et names2 au lieu de les fichiers que vous avez créés (les noms.lst et names2.lst), il ya un couple d'erreur de syntaxe: vous avez besoin d'un espace autour des crochets pour exécuter le conditionnel.
Il y a quelques petites erreurs...
teste.sh: [: missing ']'
: vous manquez un espace après0
variables
$name
et$name2
semblent pas remplies.Et certaines améliorations pourraient être:
Mais le faire en vertu des récentes bash ne nécessitent pas d'écrire un script:
ou
L'un des principal avantage de cela est qu'il n'est pas nécessaire de fichiers temporaires.
Bien sûr, cela pourrait être écrit correctement et plus lisible: