2014-07-07 28 views
8
pathname=$(cat $HOME/.rm.cfg) 
if [ ! -z $pathname/$1 ] 

.rm.cfg varsa denetleme beklenen hata adı şu diziniikili operatör tam yolunu içeren bir dosya

/home/username/deleted1

$1 içeren bir dosya olduğunu bir dosyanın

[ ! -z $pathname/$1 ] hattı neden bir ikili operatör beklenen hatası verir.

cevap

15

$ yol adınızın birden fazla sözcük içerdiği anlaşılıyor. .rm.cfg dosyanızda birden çok satır olabilir veya belki de yol boşluk içerir. Her neyse, iyi olmayan

ile sonlandırın. Eğer sadece tek bir yol bekliyor ve yol içeren boşluk karşı korumak istediğiniz ediyorsanız,

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

, sorun ben $ Pathname benim tanımında sonunda bir boşluk vardı. Bunun olmasını önlemek için şerit işlevini kullandım (bkz. [Burada] (https://www.gnu.org/software/make/manual/html_node/Text-Functions.html)). – rkersh

+0

Bunu yanıt olarak kabul et! –

8

için eğer hat değiştirmek ı ikili operatör ben daha sonra da tek kelime alıyorum beklenen Aynı hatayı karşı karşıya vardı Bazı değişken.Yani aşağıda belirtildiği gibi kullandım.

if [ ! -z ${variable} ]; 

Yani kararlılığı için bu hata ben bunu değiştirdi: Benim için

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

harika! benim için çalıştı. Ama çözümün neden işe yaradığı hakkında bir fikrin var mı? –

İlgili konular