Ubuntu Shell指令碼編碼問題

2022-09-14 03:48:10 字數 1181 閱讀 9770

今天一同事在寫乙個資料庫備份的shell指令碼,在多次確定指令碼**無誤的情況下,發現指令碼輸出的結果死活不正常。

/*

* * @author jenkihuang

* @email [email protected]

* @version 20150407

* /#!/bin/bash

data_dir="/home/oracle/bakup/data"

logs_dir="/home/oracle/bakup/logs"

deltime=`date -d "7 days ago" +%y%m%d`

btm=`date "+%y%m%d%h%m%s"`

filename="$data_dir$btm.dmp"

echo "starting bakup..."

echo $filename

在對檔案進行可執行許可權設定後,執行指令碼時輸出

sudo ./oracleautobk.sh

starting bakup...

.dmp0407165921akup/data

上面的第二條echo語句明顯不對,無奈在網上各種找資料,最後在bing(很少用度娘搜尋,google搜尋大家都懂的)中找到關於shell指令碼編碼的問題。原來那同事在編寫指令碼的時候不是用的vi編輯器直接編寫。而是在windows上面用ue編寫後,用ftp工具傳到linux系統中。那麼現在問題來了,在windows系統中編寫的shell指令碼的預設格式是dos而不是unix,所以造成輸出結果不正確。

檢視shell指令碼的格式,用vi編輯shell指令碼。然後輸入":set ff?"如果輸出結束是"fileformat=dos",則需要修改檔案的格式

//

修改檔案格式,用vi開啟shell指令碼後輸入

:set ff=unix

//然後儲存退出

再次執行指令碼檔案,可以正確輸出年月日格式的檔名

sudo ./oracleautobk.sh

starting bakup...

/home/oracle/bakup/data20150407171543.dmp

所以在這看來,以後編寫指令碼還是直接在linux系統中使用vi編寫更為實在。一來熟練了vi編輯器,二來還可以避免帶來不必要的麻煩。

**:

Ubuntu shell 程式設計

開頭 bin sh 用來告訴系統,用 bin sh來執行程式。加許可權 chmod x filename 有的使用者還要更改檔案使用者為執行使用者 如 chown hadoop hadoop filename 之後才能用 filename執行 指令碼中可以加注釋,前面用 shell 中命令和系統中輸...

ubuntu shell 程式設計學習

1.開頭 bin bash 這句話必須放在檔案的第一行,符號 用來告訴系統它後面的引數是用來執行該檔案的程式。可以執行echo shell來看你的系統是使用那一類shell,比如ubuntu使用的是 bin bash,則第一行寫成 bin bash 進行shell程式設計時,以 開頭的句子表示注釋,...

初學Ubuntu shell程式設計

1 shell介紹 shell是使用者與核心之間的橋梁,也可以當作linux中的程式語言。shell與使用者互動的模式 在互動環境下,每次執行一條命令 通過編寫shell指令碼的方式 2 shell的編寫 shell直譯器 直譯器 eg bin bash shell的變數型別 環境變數 shell環...