LINUX下奇異的指令碼重編寫,解決指令碼無法執行

來源:互聯網
上載者:User

標籤:linux   指令碼   

***********************************************聲明********************************************** 

原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明出處,否則追究著作權法律責任。

表述有錯誤之處,請您留言或郵件([email protected])指明,不勝感激。

本文轉載必須保留此處:http://blog.csdn.net/huangyanlong/article/details/39357927

深藍的blog:http://blog.csdn.net/huangyanlong

***************************************************************************************************

今天,在安裝oracle資料庫的過程中,在執行安裝包指令碼時,報出比較奇怪的錯誤現象,如下所示:

[[email protected] test]# sh rpm.sh--單詞釋義--ambiguous:模糊不清的--redirect:直接的: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: command not found: command not found: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: ambiguous redirect: command not found: command not found: command not found 

於是,查看了執行的指令碼,此指令碼是在WIN平台下提前編寫好的執行安裝包的指令,如下所示:

[[email protected] test]# cat rpm.sh     --查看有問題的指令碼,沒有發現異常編寫rpm -ivh binutils-2.17.50.0.6-14.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh binutils-devel-2.17.50.0.6-14.el5.i386.rpm >> rpm.log 2>&1 rpm -ivh binutils-devel-2.17.50.0.6-14.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh compat-db-4.2.52-5.1.i386.rpm >> rpm.log 2>&1rpm -ivh compat-db-4.2.52-5.1.x86_64.rpm >> rpm.log 2>&1rpm -ivh control-center-2.16.0-16.el5.i386.rpm >> rpm.log 2>&1rpm -ivh control-center-2.16.0-16.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh control-center-devel-2.16.0-16.el5.i386.rpm >> rpm.log 2>&1rpm -ivh control-center-devel-2.16.0-16.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh gcc-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh gcc-c++-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-2.5-58.i686.rpm >> rpm.log 2>&1rpm -ivh glibc-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-common-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-devel-2.5-58.i386.rpm >> rpm.log 2>&1rpm -ivh glibc-devel-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-headers-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-utils-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh libstdc++-devel-4.1.2-50.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libstdc++-devel-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libX11-1.0.3-11.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libX11-1.0.3-11.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libX11-devel-1.0.3-11.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libX11-devel-1.0.3-11.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libXp-1.0.0-8.1.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXp-devel-1.0.0-8.1.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libXp-devel-1.0.0-8.1.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXpm-3.5.5-3.i386.rpm >> rpm.log 2>&1rpm -ivh libXpm-3.5.5-3.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXpm-devel-3.5.5-3.i386.rpm >> rpm.log 2>&1rpm -ivh libXpm-devel-3.5.5-3.x86_64.rpm >> rpm.log 2>&1rpm -ivh make-3.81-3.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh pdksh-5.2.14-36.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh sysstat-7.0.2-3.el5_5.1.x86_64.rpm >> rpm.log 2>&1rm -rf binutils-2.17.50.0.6-14.el5.x86_64.rpmrm -rf binutils-devel-2.17.50.0.6-14.el5.i386.rpmrm -rf binutils-devel-2.17.50.0.6-14.el5.x86_64.rpmrm -rf compat-db-4.2.52-5.1.i386.rpmrm -rf compat-db-4.2.52-5.1.x86_64.rpmrm -rf control-center-2.16.0-16.el5.i386.rpmrm -rf control-center-2.16.0-16.el5.x86_64.rpmrm -rf control-center-devel-2.16.0-16.el5.i386.rpmrm -rf control-center-devel-2.16.0-16.el5.x86_64.rpmrm -rf gcc-4.1.2-50.el5.x86_64.rpmrm -rf gcc-c++-4.1.2-50.el5.x86_64.rpmrm -rf glibc-2.5-58.i686.rpmrm -rf glibc-2.5-58.x86_64.rpmrm -rf glibc-common-2.5-58.x86_64.rpmrm -rf glibc-devel-2.5-58.i386.rpmrm -rf glibc-devel-2.5-58.x86_64.rpmrm -rf glibc-headers-2.5-58.x86_64.rpmrm -rf glibc-utils-2.5-58.x86_64.rpmrm -rf libstdc++-devel-4.1.2-50.el5.i386.rpmrm -rf libstdc++-devel-4.1.2-50.el5.x86_64.rpmrm -rf libX11-1.0.3-11.el5.i386.rpmrm -rf libX11-1.0.3-11.el5.x86_64.rpmrm -rf libX11-devel-1.0.3-11.el5.i386.rpmrm -rf libX11-devel-1.0.3-11.el5.x86_64.rpmrm -rf libXp-1.0.0-8.1.el5.i386.rpmrm -rf libXp-1.0.0-8.1.el5.x86_64.rpmrm -rf libXp-devel-1.0.0-8.1.el5.i386.rpmrm -rf libXp-devel-1.0.0-8.1.el5.x86_64.rpmrm -rf libXpm-3.5.5-3.i386.rpmrm -rf libXpm-3.5.5-3.x86_64.rpmrm -rf libXpm-devel-3.5.5-3.i386.rpmrm -rf libXpm-devel-3.5.5-3.x86_64.rpmrm -rf make-3.81-3.el5.x86_64.rpmrm -rf pdksh-5.2.14-36.el5.x86_64.rpmrm -rf sysstat-7.0.2-3.el5_5.1.x86_64.rpmrpm -qa|grep binutils >> queryrpm.log 2>&1rpm -qa|grep compat >> queryrpm.log 2>&1rpm -qa|grep control >> queryrpm.log 2>&1rpm -qa|grep gcc >> queryrpm.log 2>&1rpm -qa|grep glibc >> queryrpm.log 2>&1rpm -qa|grep gnome >> queryrpm.log 2>&1rpm -qa|grep libstdc++ >> queryrpm.log 2>&1rpm -qa|grep make >> queryrpm.log 2>&1rpm -qa|grep pdksh >> queryrpm.log 2>&1rpm -qa|grep sysstat >> queryrpm.log 2>&1 

接下來採取的方法是,把該指令碼中的內容在LINUX平台下重新拷貝到建立的檔案中,如下所示:

[[email protected] test]# cat hyll.sh--LINUX系統下,把rpm.sh中的指令複製了一遍到新的指令檔hyll.sh中--重新執行指令碼內容如下,與之前rpm.sh指令碼內容完全一樣rpm -ivh binutils-2.17.50.0.6-14.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh binutils-devel-2.17.50.0.6-14.el5.i386.rpm >> rpm.log 2>&1 rpm -ivh binutils-devel-2.17.50.0.6-14.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh compat-db-4.2.52-5.1.i386.rpm >> rpm.log 2>&1rpm -ivh compat-db-4.2.52-5.1.x86_64.rpm >> rpm.log 2>&1rpm -ivh control-center-2.16.0-16.el5.i386.rpm >> rpm.log 2>&1rpm -ivh control-center-2.16.0-16.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh control-center-devel-2.16.0-16.el5.i386.rpm >> rpm.log 2>&1rpm -ivh control-center-devel-2.16.0-16.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh gcc-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh gcc-c++-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-2.5-58.i686.rpm >> rpm.log 2>&1rpm -ivh glibc-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-common-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-devel-2.5-58.i386.rpm >> rpm.log 2>&1rpm -ivh glibc-devel-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-headers-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh glibc-utils-2.5-58.x86_64.rpm >> rpm.log 2>&1rpm -ivh libstdc++-devel-4.1.2-50.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libstdc++-devel-4.1.2-50.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libX11-1.0.3-11.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libX11-1.0.3-11.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libX11-devel-1.0.3-11.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libX11-devel-1.0.3-11.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libXp-1.0.0-8.1.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXp-devel-1.0.0-8.1.el5.i386.rpm >> rpm.log 2>&1rpm -ivh libXp-devel-1.0.0-8.1.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXpm-3.5.5-3.i386.rpm >> rpm.log 2>&1rpm -ivh libXpm-3.5.5-3.x86_64.rpm >> rpm.log 2>&1rpm -ivh libXpm-devel-3.5.5-3.i386.rpm >> rpm.log 2>&1rpm -ivh libXpm-devel-3.5.5-3.x86_64.rpm >> rpm.log 2>&1rpm -ivh make-3.81-3.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh pdksh-5.2.14-36.el5.x86_64.rpm >> rpm.log 2>&1rpm -ivh sysstat-7.0.2-3.el5_5.1.x86_64.rpm >> rpm.log 2>&1rm -rf binutils-2.17.50.0.6-14.el5.x86_64.rpmrm -rf binutils-devel-2.17.50.0.6-14.el5.i386.rpmrm -rf binutils-devel-2.17.50.0.6-14.el5.x86_64.rpmrm -rf compat-db-4.2.52-5.1.i386.rpmrm -rf compat-db-4.2.52-5.1.x86_64.rpmrm -rf control-center-2.16.0-16.el5.i386.rpmrm -rf control-center-2.16.0-16.el5.x86_64.rpmrm -rf control-center-devel-2.16.0-16.el5.i386.rpmrm -rf control-center-devel-2.16.0-16.el5.x86_64.rpmrm -rf gcc-4.1.2-50.el5.x86_64.rpmrm -rf gcc-c++-4.1.2-50.el5.x86_64.rpmrm -rf glibc-2.5-58.i686.rpmrm -rf glibc-2.5-58.x86_64.rpmrm -rf glibc-common-2.5-58.x86_64.rpmrm -rf glibc-devel-2.5-58.i386.rpmrm -rf glibc-devel-2.5-58.x86_64.rpmrm -rf glibc-headers-2.5-58.x86_64.rpmrm -rf glibc-utils-2.5-58.x86_64.rpmrm -rf libstdc++-devel-4.1.2-50.el5.i386.rpmrm -rf libstdc++-devel-4.1.2-50.el5.x86_64.rpmrm -rf libX11-1.0.3-11.el5.i386.rpmrm -rf libX11-1.0.3-11.el5.x86_64.rpmrm -rf libX11-devel-1.0.3-11.el5.i386.rpmrm -rf libX11-devel-1.0.3-11.el5.x86_64.rpmrm -rf libXp-1.0.0-8.1.el5.i386.rpmrm -rf libXp-1.0.0-8.1.el5.x86_64.rpmrm -rf libXp-devel-1.0.0-8.1.el5.i386.rpmrm -rf libXp-devel-1.0.0-8.1.el5.x86_64.rpmrm -rf libXpm-3.5.5-3.i386.rpmrm -rf libXpm-3.5.5-3.x86_64.rpmrm -rf libXpm-devel-3.5.5-3.i386.rpmrm -rf libXpm-devel-3.5.5-3.x86_64.rpmrm -rf make-3.81-3.el5.x86_64.rpmrm -rf pdksh-5.2.14-36.el5.x86_64.rpmrm -rf sysstat-7.0.2-3.el5_5.1.x86_64.rpmrpm -qa|grep binutils >> queryrpm.log 2>&1rpm -qa|grep compat >> queryrpm.log 2>&1rpm -qa|grep control >> queryrpm.log 2>&1rpm -qa|grep gcc >> queryrpm.log 2>&1rpm -qa|grep glibc >> queryrpm.log 2>&1rpm -qa|grep gnome >> queryrpm.log 2>&1rpm -qa|grep libstdc++ >> queryrpm.log 2>&1rpm -qa|grep make >> queryrpm.log 2>&1rpm -qa|grep pdksh >> queryrpm.log 2>&1rpm -qa|grep sysstat >> queryrpm.log 2>&1[[email protected] test]# sh  hyll.sh 

成功執行,對比前後兩個指令碼,書寫內容上沒有差異。

查看指令碼許可權,完全一樣的兩個指令碼,hyll.sh可以正常執行,而rpm.sh卻不能正常執行。

[[email protected] test]# ls -lltotal 24-rw-r--r-- 1 root root 3855 Sep 17 15:23 hyll.sh-rw-r--r-- 1 1 root root 3942 Sep 17 14:32 rpm.sh 

小結:

        今天遇到的問題感覺有點奇葩,幾乎相同的兩個指令碼,一個可以執行,一個卻不可以執行。後期又實驗了一次,將指令碼完全一樣的複製了一次(指令碼名稱、內容),沒做任何修改,就是把指令碼重建了一次。重建後的指令碼卻可以執行了。想了下,唯一的區別就是無法執行的指令碼實在WINDOWS上編寫的,新的指令碼實在LINUX上編寫的。問題雖然解決,這個現象還是感覺非常奇怪。

        於是帶著好奇,在網上搜了下“ambiguous redirect”的報錯原因,發現很多有關於重新導向符格式的問題。於是想了下,是否是重新導向符號是需要在LINUX下編寫才會正常執行(也就是說LINUX系統對某些特殊操作符比較敏感)。

         帶著疑問,開始重新一次實驗。大致思路如下:

         在LINUX下將不可執行指令碼修改為可執行檔指令碼(就是在LINUX下重寫貼一遍指令),匯出到WINDOWS下,重新換LINUX平台,將匯出的指令檔重新命名,上傳到實驗平台,驗證指令碼的可用性。經過驗證後發現,通過LINUX平台編輯的指令碼均可以正常執行,指令碼無法執行是由於跨平台書寫格式所導致的。在WINDOWS和LINUX系統下其中對換行等格式都是有細微差別的,因此,今天這個報錯告訴我們,今後修改指令碼要在LINUX系統下完成,完成後再匯入到自己的存放裝置中,以防萬一。

***********************************************聲明********************************************** 

原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明出處,否則追究著作權法律責任。

表述有錯誤之處,請您留言或郵件([email protected])指明,不勝感激。

本文轉載必須保留此處:http://blog.csdn.net/huangyanlong/article/details/39357927

深藍的blog:http://blog.csdn.net/huangyanlong

***************************************************************************************************

LINUX下奇異的指令碼重編寫,解決指令碼無法執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.