1. 程式人生 > >windows下指令碼在linux執行換行問題

windows下指令碼在linux執行換行問題

#!/bin/bash
NOWDATE=`date +%Y%m%d`
LOG_DIR="/data/logs/nginx"
LOG_PATH=${LOG_DIR}${NOWDATE}
echo "date:$NOWDATE"
echo "LOG_DIR:$LOG_DIR"
echo "LOG_PATH:"
echo ${LOG_PATH}

簡簡單單的程式碼,輸出不是我想要的
date:20160708
LOG_DIR:/data/logs/nginx
LOG_PATH:
20160708gs/nginx

用 sh -x nginxstatic.sh 檢視
++ date +%Y%m%d
+ NOWDATE=$'20160708\r'
+ LOG_DIR=$'/data/logs/nginx\r'
+ LOG_PATH=$'/data/logs/nginx\r20160708\r\r'
+ echo $'date:20160708\r\r'
date:20160708
+ echo $'LOG_DIR:/data/logs/nginx\r\r'
LOG_DIR:/data/logs/nginx
+ echo $'LOG_PATH:\r'
LOG_PATH:
+ echo -e $'/data/logs/nginx\r20160708\r\r\r'
20160708gs/nginx

原來該指令碼是在windows下寫的 換行符為\r\n,而linux換行符為\n \r為回到行首,所以會出現這樣的問題。
以後可以在執行windows檔案前 用dos2unix命令轉換檔案

相關推薦

windows指令碼linux執行問題

#!/bin/bashNOWDATE=`date +%Y%m%d`LOG_DIR="/data/logs/nginx"LOG_PATH=${LOG_DIR}${NOWDATE}echo "date:$NOWDATE"echo "LOG_DIR:$LOG_DIR"echo "L

vim中處理windows的文件

在Linux環境下使用vim處理windows環境下的文件時會有換行符不相容的問題。 windows下換行符為:“\r\n” Linux下換行符為:“\n” 在vim中我們使用:set filefor

Linux/WindowsC++設定執行緒名字方便多執行緒除錯

C++多執行緒程式設計,除錯是一個大問題,原因之一就是,執行緒名字繼承了父程序的名字,因此導致同一段程式碼的不同執行緒名字一樣;而且還會導致執行緒的名字怪怪的,不好看。 因此,如果在程式碼中可以設定執行緒的名字就好了,這樣在除錯中就可以看到期望的執行緒名字,這樣便於除錯。 由於編

windows選單選項執行ffmpeg命令的bat指令碼

編寫了一個windows平臺下的bat指令碼,通過選項便捷執行所需的ffmpeg轉碼命令。大大減少平常DOS下輸入命令引數等繁瑣操作,希望能幫助到所有閱讀到此文的讀者, 聯絡方式:[email protected] 源指令碼的下載路徑:https://github.com/zymi

windowslinux符的轉換

windows 檔案的換行符為:[CR][LF] Linux和Unix檔案的換行符為:[LF] 有些需要轉換使用,如修改或替換安卓andriod的hosts檔案,需要保證換行符為Unix形式才能使用。 其中一種辦法是在linux系統中重新儲存一份檔案;

windowsLinux執行python程式的方法

1 在windows下執行python程式 1)從DOS命令列執行python指令碼   用python直譯器來執行python指令碼,在windows下面python直譯器是python.exe,我的python檔案安裝在D:\Python27,在這個目錄下可

如何在Windows使用Linux系統來編譯和執行程式?

很多開發人員都有這樣的疑問:自己平時是在Windows下面辦公的,而自己編寫的程式的執行環境又是Linux的,如何從Windows切換到Linux呢?是不是要專門到Linux機器上去編寫程式碼呢?實際上

windows檢測軟體執行狀態。指令碼

@echo off :loop ping 127.0.0.1 -n 2 >nul tasklist /nh|find /i "KK.exe" if ERRORLEVEL 1 (start F:\KKcapture\KK.exe) else (echo 程序存在!)

windowslinux符^M轉換和刪除

問題現象:Windows下的文字檔案換行符是\r\n,Linux下的換行符是\n,在Linux下vim開啟Windows的文字檔案,在行尾會顯示^M字元,影響配置檔案的閱讀,嚴重的會影響shell指令碼的執行。問題確認:1:file filename可以提示檔案中存在CRLF

Golang 在windows編譯Linux執行檔案

Golang 支援交叉編譯,在一個平臺上生成另一個平臺的可執行程式,最近使用了一下,非常好用,這裡備忘一下。 Windows 下編譯Linux 64位可執行程式 SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go

Windows使用Apache執行本地Python指令碼和訪問html教程

最近學習到Python的cgi程式設計,搗鼓了一番,把自己的學習經驗放出來。一、安裝Apache2.4伺服器你需要去官網下載。地址:https://www.apachehaus.com/cgi-bin/download.plx或者http://www.apachelounge

gcc和MinGW的異同(在cygwin/gcc做的東西可以無縫的用在linux,沒有任何問題,是在windows開發linux程序的一個很好的選擇)

實現 o-c tool 交叉 lin 分析 模擬 gcc編譯器 還要 cygwin/gcc和MinGW都是gcc在windows下的編譯環境,但是它們有什麽區別,在實際工作中如何選擇這兩種編譯器。 cygwin/gcc完全可以和在linux下的gcc化做等號,這個可以從bo

samba服務:為在windows操作linux的文件而生

詳細 conf etc isa 使用 emctl con mage yum vi/vim編輯器好玩嗎?雖有著層出不窮的語法糖但又如何與傳統的sublime相媲美? 那麽,來吧~ 動手跟我一起做個samba服務吧~ 安裝 yum -y install sam

windows實現linux的遠程訪問

你們 用戶名 成功 href get 新建 介紹 lan 優勢   在網絡性能、安全性、可管理性上,Linux有著其他系統無法比擬的強大優勢,而服務器對這些方面要求特別高,因此Linux常常被用來做服務器使用。而當我們需要維護linux服務器的時候,就需要遠程訪問linux

Linux刪除符-

換行符場景:使用nmap結合for循環對文本內的ip進行檢測時,發現每行ip後面有個\r的換行符影響shell腳本執行 解決方案:使用vim編輯器做替換:使用vim -v file //打開文件 執行下面的替換命令 :%s/\r//處理後再次打開如下:Linux刪除換行符-

Windows食用Linux工作環境(WSL)

aliyun 命令行 阿裏 一次 問題 turn ins 習慣性 不必要 在Windows下食用Linux工作環境(WSL) 為什麽要這麽瞎搞呢?因為最近換了個硬盤,搞了個雙系統,然後習慣性地按下 Ctrl+Alt+T 發現什麽都沒有召喚出來,然後忽然想起換了系統。 然

Linux 執行命令的方法與區別(解決supervisor啟動使用GPU的python服務)

在很多情況下,我們需要一次性執行多條命令。比如我在用supervisor啟動python服務的時候就有類似的需求。 對於我的例子背景是通過supervisor監控python在python 35環境下的GPU使用的服務,其中分三個塊:python35環境的需求、GPU服務的使用、服務自動重啟。當

windowsLibevent +多執行緒(負載均衡分配法) 之檔案傳輸

一、先說一下服務端的流程: 1、主執行緒負責監聽客戶端的連線; 2、當有客戶端連線時,主執行緒通過管道向相應的子執行緒傳送監聽套接字描述符,子執行緒通過負載均衡法選擇出來; 3、當主執行緒傳送監聽描述符時,子執行緒的讀管道回撥函式會被回撥; 4、子執行緒為收到的監聽描述符設定讀取

實現在windows使用linux的命令的軟體

cygwin64是一種用於windows上,可以執行linux命令的軟體,其實就是一種類linux環境,在windows下使用該軟體,可以執行linux的命令。當然相對於真正的linux系統,該軟體支援的命令要少了很多 具體下載地址詳見,並且有相應的介紹 http://www.cy

WindowsLinux開發環境Cygwin

Cygwin是許多自由軟體的集合,最初由Cygnus Solutions開發,用於各種版本的Microsoft Windows上,執行UNIX類系統。Cygwin的主要目的是通過重新編譯,將POSIX系統(例如Linux、BSD,以及其他Unix系統)上的軟體移植到Windows上。Cygwin移植