编写脚本来处理 iscsi

编写脚本来处理 iscsi

我目前正在编写一个脚本(至少在理论上)应该安装并添加 iscsitarget 上的配置更改,但我一直收到一个错误,我似乎无法弄清楚其来源。

错误是:

line 39: $'[\302\240-e': command not found.
mv: cannot stat `/etc/iet/ietd.conf' : No such file or directory.

以下是目前的代码:

#!/bin/bash

CONF="/etc/default/iscsitarget."
LOGIN="/etc/iet/ietd.conf.back"

#Dette skjekker om bruker er root

if [[ $EUID -ne 0 ]]; then
  echo "Du må være root for å kjøre dette scriptet."
  exit 1
fi 

#Skjekker om iscsi target er innstallert

dpkg -s "iscsitarget" > /dev/null 2>&1 && {
  echo "Iscsi Target er allerede innstallert."
  } || {
  echo "Innstallerer iscsi target..."
  aptitude -y install iscsitarget
  }

#Her tar vi konfigurasjons filen til og gjør en backup av den

if [ -e "$CONF" ]
  then
    echo "$CONF eksisterer, backup er unødvendig."
  else
    mv /etc/default/iscsitarget /etc/default/iscsitarget.back
    echo "Backup av konfigurasjonsfilen er tatt."
fi

#Her lager vi en ny konfigurasjonsfil til iscsi
cat > /etc/default/iscsitarget <<"EOF"
ISCSITARGET_ENABLE=true
EOF
echo "Konfigurasjonsfil oppdatert!"

#Backup av login fil og login til iscsitarget
if [ -e "$LOGIN" ]
  then
    echo "$LOGIN eksisterer, backup er unødvendig."
  else
    mv /etc/iet/ietd.conf /etc/iet/ietd.conf.back
    echo "Backup av konfigurasjonsfil er tatt."
fi

对此有点陌生,谢谢!

答案1

通常,当你从其他来源复制/粘贴某些命令时,会发生这种情况,并且意外地复制了一些不可见的特殊字符

错误通常如下所示:

line 39: $'[\302\240-e': command not found.

其中 0302 0240 是八进制 UTF-8,表示不间断空格。

如果你正在使用 vi/vim,你可以使用:set list命令检查你的代码。正如建议的那样堆栈溢出,你可以这样做:

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

然后使用:set list你会看到除了空格之外的所有不可见字符

我还建议您添加舍邦在脚本顶部。就你的情况而言#!/bin/bash

相关内容