我目前正在编写一个脚本(至少在理论上)应该安装并添加 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
。