Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Shell命令在手动键入时工作。Don';放入脚本文件时无法工作_Linux_Bash_Shell - Fatal编程技术网

Linux Shell命令在手动键入时工作。Don';放入脚本文件时无法工作

Linux Shell命令在手动键入时工作。Don';放入脚本文件时无法工作,linux,bash,shell,Linux,Bash,Shell,我有一个名为LinuxCommands的Linux脚本,用于检查我的机器是否具备Oracle安装所需的先决条件。如果我复制Windows记事本中的所有文本并将其粘贴到Linux终端,脚本将工作,但当我将实际的.sh文件ftp到Linux终端并通过调用bash运行它时,脚本将不工作。如果我使用./notation,脚本根本不起作用。我使用root来复制命令,并使用./或bash表示法运行文件。Linux脚本如下所示 #!/bin/bash #Install packages, upgrade th

我有一个名为LinuxCommands的Linux脚本,用于检查我的机器是否具备Oracle安装所需的先决条件。如果我复制Windows记事本中的所有文本并将其粘贴到Linux终端,脚本将工作,但当我将实际的.sh文件ftp到Linux终端并通过调用bash运行它时,脚本将不工作。如果我使用./notation,脚本根本不起作用。我使用root来复制命令,并使用./或bash表示法运行文件。Linux脚本如下所示

#!/bin/bash
#Install packages, upgrade those that already exist

PKG_OK=$(dpkg-query -W --showformat='${Status}\n' binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-common-2.5 glibc-devel-2.5 glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-devel-0.3.106 libgcc-4.1.2 libstdc++-4.1.2 libstdc++-devel make-3.81 sysstat-7.0.2|grep "install ok installed")
echo Checking for libraries: $PKG_OK
if [ "" == "$PKG_OK" ]; then
  echo "Not Installed. Installing"
  yum -y install binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-common-2.5 glibc-devel-2.5 glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-devel-0.3.106 libgcc-4.1.2 libstdc++-4.1.2 libstdc++-devel make-3.81 sysstat-7.0.2
fi


#Adds oinstall and dba groups
/bin/id -g oinstall 2>/dev/null \
[ $? -eq 0 ] && echo "Group found" || sudo /usr/sbin/groupadd oinstall

/bin/id -g dba 2>/dev/null \
[ $? -eq 0 ] && echo "Group found" || sudo /usr/sbin/groupadd dba

#Adds oracle user in oinstall group

if id -u oracle >/dev/null 2>&1; then
        echo "user exists"
else
        /usr/sbin/useradd -m -g oinstall -G dba oracle
fi

#Creates installation directory for Oracle
chown -R oracle:oinstall /u00/Oracle12CInstall
chmod -R 775 /u00/Oracle12CInstall

#Adds Oracle variables to the Oracle User's profile.
cat <<EOF > /home/oracle/.bash_profile
ORACLE_BASE=/u00/Oracle12cInstall
ORACLE_HOME=$ORACLE_BASE/test2/product/121
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_BASE
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:/usr/X11R6/bin:/usr/lib

export PATH

export ORACLE_BASE ORACLE_HOME LD_LIBRARY_PATH
umask 022

EOF

这个问题通过跑步解决了

dos2unix LinuxCommands

上面的命令从我的文件中删除了DOS行尾,并且它能够成功运行。

确保脚本没有DOS行尾(请参阅其中的项目一)。好眼力。成功了。我将把脚本留在这里,以防有人需要为Oracle Linux安装编写脚本。@EtanReisner注意,这就是您提到的。你可以发布一个解释它的答案@fedorqui我已经决定,在这一点上(就我而言),DOS行结束问题应该作为一个打字错误或作为不可生产和对其他人没有帮助的未来关闭。它出现在标记wiki中是有原因的。如果有一个明确的规范答案,我会用它代替,但我不知道一个立即(和快速搜索没有找到任何)。所以我一直在避免用更多的答案来污染环境,而是用接近票数的选票来代替。@EtanReisner这是一个很好的观点。我也不知道是否有canonical,所以我也投票以同样的理由结束。
dos2unix LinuxCommands