首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell脚本中使用chmod命令

在shell脚本中使用chmod命令
EN

Stack Overflow用户
提问于 2013-12-08 00:27:21
回答 2查看 18.4K关注 0票数 1

我试图在shell脚本中执行chmod命令,但得到以下错误:

代码语言:javascript
复制
 chmod: missing operand after "777"
Try "chmod --help" for more informations.

这是我的代码中的一个重要部分:

代码语言:javascript
复制
caminhoPadrao="/usr/local/lib/"
...
chmod -R 777 $caminhoPadrao

Bellow是我的完整脚本。

代码语言:javascript
复制
#!/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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-08 00:42:26

问题出在这里:

代码语言:javascript
复制
caminhoCaixaProperties="`~/folds/myfile.dot`"
caminhoDados="`~/folds/DarumaFramework/`"

您使用了'`‘执行属性,我非常肯定您在消息行之前看到的是这样:

代码语言:javascript
复制
bash: ~/folds/myfile.dot: command not found

代码语言:javascript
复制
bash: ~/folds/DarumaFramework/: is a directory

由于这些错误,两个变量都变成了"“,然后您运行缺少文件名参数的命令chmod 777

去掉文件/目录名称中的"`“,就可以了。

票数 2
EN

Stack Overflow用户

发布于 2013-12-08 00:29:59

看看这是否有效

代码语言:javascript
复制
$(chmod -R 777 $caminhoPadrao )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20443670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档