gpt4 book ai didi

linux - "set: illegal option -"在一台主机上但不在另一台主机上

转载 作者:IT王子 更新时间:2023-10-29 00:38:48 33 4
gpt4 key购买 nike

我在我的一个 ubuntu 虚拟机中编写了一个 sh 脚本,它工作正常,但是当我尝试在我的其他虚拟机中运行它时,它不起作用。两个虚拟机应该相同。使用 bash --version 两个 VM 都回复:

GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

使用lsb_release -a,两者也回复:

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty

我的 security_steps.sh 脚本如下所示:

#!/bin/sh

set -e

if ! [ -f svn_up_action.sh ]; then
echo "svn_up_action.sh is missing. Please make sure it is in the same directory as this script."
exit
fi

当我执行:sudo sh security_steps.sh 时,控制台错误:

: not foundeps.sh: 6: security_steps.sh:
security_steps.sh: 7: set: Illegal option -

我如何弄清楚非工作 shell 的虚拟机发生了什么?我觉得 shell 有些不同。感谢您的帮助!

最佳答案

这几乎可以肯定意味着您的文件有 DOS 换行符——因此,在末尾隐藏了 CR 字符。

因此,set -e变成 set -e$'\r' (使用特定于 bash 的语法来表示 CR 字符),这不是一个有效的选项。

这也解释了 : not found , 因为 CR 会将光标重置到行的开头,截断形式为 sh: commandname: not found 的错误消息通过制作 commandname而是将光标移动到行首的操作。

关于linux - "set: illegal option -"在一台主机上但不在另一台主机上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352955/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com