erreur attendue de l’opérateur binary lors de la vérification de l’existence d’un fichier avec un chemin d’access complet

pathname=$(cat $HOME/.rm.cfg) if [ ! -z $pathname/$1 ] 

.rm.cfg est un fichier qui contient le répertoire suivant

/ home / nom d’utilisateur / supprimé1

$1 est le nom d’un fichier, par exemple. verre

pourquoi fait la ligne si [ ! -z $pathname/$1 ] [ ! -z $pathname/$1 ] donne une erreur attendue à l’opérateur binary.

On dirait que votre chemin d’access $ comprend plus d’un mot. Pourrait être plusieurs lignes dans votre fichier .rm.cfg, ou peut-être que le chemin contient des espaces. De toute façon, vous vous retrouvez avec

 if [ ! -z word word word/$1 ] 

ce qui n’est pas bon. Si vous vous attendez à un seul chemin et que vous souhaitez vous protéger contre le chemin contenant des espaces, changez votre ligne if pour

 if [ ! -z "$pathname/$1" ] 

J’avais dû faire face à la même erreur d’opérateur binary attendu où j’obtiens plus d’un mot pour certaines variables. Lorsque je l’ai utilisé comme mentionné ci-dessous.

 if [ ! -z ${variable} ]; 

Donc, pour résoudre cette erreur, je l’ai changé pour:

 if [[ ! -z ${variable} ]];