我正在尝试在我的shell脚本中执行chmod命令,但是我收到以下错误:
chmod: missing operand after "777"
Try "chmod --help" for more informations.
这是我的代码中的一个重要部分:
caminhoPadrao="/usr/local/lib/"
...
chmod -R 777 $caminhoPadrao
贝娄是我的全文。
#!/bin/bash
clear
##Definicao de Variaveis
echo "Digite a velocidade da sua ECF: "; read velocidade
caminhoCaixaProperties="`~/folds/myfile.dot`"
caminhoDados="`~/folds/DarumaFramework/`"
caminhoPadrao="/usr/local/lib/"
caminhoAuxiliarConf="/usr/local/share/DarumaFramework"
libDarumaFramework="libDarumaFramework.so"
liblebin="liblebin.so"
libLeituraMFDBin="libLeituraMFDBin.so"
#Valores do MD5
md5libDarumaFramework="908bd049bb5a3c28f58f3a1c907b5f50"
md5liblebin="328378ef909491e62274c42000b50d31"
md5libLeituraMFDBin="c5f0882b5c242231225ad41dd9a1737c"
#Tempo de espera entre processos
timer=1
#Mensagens
sucesso="--->OK"
clear
echo "Checando configurações para funcionamento da coleta MFD..."
echo ""
echo "Procurando $libDarumaFramework em $caminhoPadrao"
sleep $timer
if [ -e $caminhoPadrao$libDarumaFramework ];
then
echo $sucesso
else
echo "A biblioteca $libDarumaFramework nao foi encontrada em $caminhoPadrao"
exit
fi
echo ""
echo "Procurando $liblebin em $caminhoPadrao"
sleep $timer
if [ -e $caminhoPadrao$liblebin ];
then
echo $sucesso
else
echo "A biblioteca $liblebin nao foi encontrada em $caminhoPadrao"
exit
fi
echo ""
echo "Procurando $libLeituraMFDBin em $caminhoPadrao"
sleep $timer
if [ -e $caminhoPadrao$libLeituraMFDBin ];
then
echo $sucesso
else
echo "A biblioteca $libLeituraMFDBin nao foi encontrada em $caminhoPadrao"
exit
fi
clear
echo "Checando versao das bibliotecas..."
sleep $timer
chk=`md5sum $caminhoPadrao$libDarumaFramework`
md5Atual=`echo $chk | cut -f1 -d " "`
if [ "$md5libDarumaFramework" != "$md5Atual" ];
then
echo "A versão da biblioteca $libDarumaFramework nao esta correta"
exit
fi
sleep $timer
chk=`md5sum $caminhoPadrao$liblebin`
md5Atual=`echo $chk | cut -f1 -d " "`
if [ "$md5liblebin" != "$md5Atual" ];
then
echo "A versão da biblioteca $liblebin nao esta correta"
exit
fi
sleep $timer
chk=`md5sum $caminhoPadrao$libLeituraMFDBin`
md5Atual=`echo $chk | cut -f1 -d " "`
if [ "$md5libLeituraMFDBin" != "$md5Atual" ];
then
echo "A versão da biblioteca $libLeituraMFDBin nao esta correta"
exit
fi
echo $sucesso
sleep $timer
clear
echo "Alterando permissao dos diretorios e arquivos para 777..."
chmod -R 777 $caminhoPadrao
sleep $timer
chmod -R 777 $caminhoDados
sleep $timer
chmod 777 $caminhoCaixaProperties
sleep $timer
chmod -R 777 $caminhoAuxiliarConf
echo $sucesso
sleep $timer
clear
echo "Checando consistencia do ld.so.conf..."
echo $sucesso
sleep $timer
clear
echo "Configurando portas ECF..."
for((x=0;x<=10;x++))
do
sleep $timer
if [ -e "/dev/ttyS$x" ]
then
sudo chmod 777 "/dev/ttyS$x"
stty -F "/dev/ttyS$x $velocidade"
fi
if [ -e "/dev/ttyUSB$x" ]
then
sudo chmod 777 "/dev/ttyUSB$x"
stty -F "/dev/ttyUSB$x $velocidade"
fi
done
sudo chmod 777 "/dev/ttyS*"
sudo chmod 777 "/dev/ttyU*"
clear
echo "Iniciando testes na ECF ..."
for((x=0;x<=10;x++))
do
sleep $timer
if [ -e "/dev/ttyS$x" ]
then
echo "teste" >> "/dev/ttyS$x"
echo "teste" >> "/dev/ttyS$x"
echo "teste" >> "/dev/ttyS$x"
echo "A ECF 'cuspiu' papel ? [sim/nao]"; read portaEncontrada
if [ $portaEncontrada=="sim" ] then
portaDefinitiva="/dev/ttyS$x"
echo "ECF conectada em $portaDefinitiva"
break
fi
fi
if [ -e "/dev/ttyUSB$x" ]
then
echo "teste" >> "/dev/ttyUSB$x"
echo "teste" >> "/dev/ttyUSB$x"
echo "teste" >> "/dev/ttyUSB$x"
echo "A ECF 'cuspiu' papel ? [sim/nao]"; read portaEncontrada
if [ $portaEncontrada=="sim" ] then
portaDefinitiva="/dev/ttyUSB$x"
echo "ECF conectada em $portaDefinitiva"
break
fi
fi
done
echo "Processo Finalizado com sucesso"
exit
答案 0 :(得分:2)
问题出在这里:
caminhoCaixaProperties="`~/folds/myfile.dot`"
caminhoDados="`~/folds/DarumaFramework/`"
你使用'''执行属性,我很确定你在消息行之前就看到了这样:
bash: ~/folds/myfile.dot: command not found
和
bash: ~/folds/DarumaFramework/: is a directory
由于这些错误,两个变量都变为“”,然后运行缺少文件名参数的命令chmod 777
。
从文件/目录名中删除“`”,你会很好。
答案 1 :(得分:0)
看看是否有效
$(chmod -R 777 $caminhoPadrao )