linux 下運行 shell 腳本報錯 line 4 $' r' command not found

作者:Gakki

問題描述

  • 在 Windows 下編寫好 Shell 腳本之后放到 Linux 上運行報錯宋下,如:
    line 4 $' r' command not found

問題原因

  • 出現(xiàn)這樣的錯誤,是因為 Shell 腳本在 Windows 系統(tǒng)編寫時薄翅,每行結(jié)尾是 “<換行><回車>”芝雪,即 \n\r 千元;在 Unix 體系中每行結(jié)尾只有“<換行>”,即 \n 卓囚,所以在 Unix 體系中運行腳本時,會認(rèn)為 \r 是一個字符站蝠,導(dǎo)致運行錯誤汰具。

解決方案

就是將 Shell 腳本中的 \r 字符去除掉。

方法一:
  • 使用 sed 命令:sed -i 's/\r//' 腳本名
  • 解釋命令:
    • sed:可依照腳本的指令來處理沉衣、編輯文本文件郁副。主要用來自動編輯一個或多個文件、簡化對文件的反復(fù)操作豌习、編寫轉(zhuǎn)換程序等存谎。
    • i:會直接修改源文件,要慎用肥隆。
    • sed s 替換腳本命令既荚,命令的基本格式為:[address]s/pattern/replacement/flags
      • address:指定要操作的具體行;
      • pattern:指的是需要替換的內(nèi)容;
      • replacement:指的是要替換的新內(nèi)容栋艳。
      • flags 常用標(biāo)記:
flags 標(biāo)記 功能
n 1~512 之間的數(shù)字恰聘,表示指定要替換的字符串出現(xiàn)第幾次時才進(jìn)行替換。例如吸占,一行中有 3 個 A晴叨,但用戶只想替換第二個 A,這是就用到這個標(biāo)記矾屯;
g 對數(shù)據(jù)中所有匹配到的內(nèi)容進(jìn)行替換兼蕊,如果沒有 g,則只會在第一次匹配成功時做替換操作件蚕。例如孙技,一行數(shù)據(jù)中有 3 個 A,則只會替換第一個 A排作;
p 會打印與替換命令中指定的模式匹配的行牵啦。此標(biāo)記通常與 -n 選項一起使用。
w file 將匹配后的結(jié)果保存指定的 file 文件中妄痪;
& 用正則表達(dá)式匹配的內(nèi)容進(jìn)行替換哈雏;
\n 匹配第 n 個子串,該子串之前在 pattern 中用 () 指定衫生。
\ 轉(zhuǎn)義(轉(zhuǎn)義替換部分包含:&僧著、\ 等)

如:

  • sed 's/test/trial/2' test.txt:sed 編輯器只替換每行中第 2 次出現(xiàn)的匹配模式。數(shù)字 2 作為標(biāo)記的結(jié)果障簿。
  • sed 's/test/trial/g' test.txt:替換所有匹配的字符串。
方法二:
  • 使用命令即刻:dos2unix one-more.sh
  • 報錯:-bash: dos2unix: command not found
  • 說明dos2unix還沒有安裝栅迄,運行如下命令進(jìn)行安裝:yum install -y dos2unix

其他

  • 也可以將文件內(nèi)容打印出來站故,這樣更能直觀的發(fā)現(xiàn)問題。
  • 在終端運行該命令:
python3 -c "import json; print(json.dumps([{'length': len(line), 'content': line} for line in open('test.sh')], indent=4))"

注:將 test.sh 改為自己的路徑與文件名即可。

打印結(jié)果
打印結(jié)果
  • 我們可以從中發(fā)現(xiàn)西篓,cat 沒有將換行符打印出來愈腾,不好發(fā)現(xiàn)問題。但通過運行 python 命令岂津,就很直觀的發(fā)現(xiàn)問題虱黄。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吮成,隨后出現(xiàn)的幾起案子橱乱,更是在濱河造成了極大的恐慌,老刑警劉巖粱甫,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泳叠,死亡現(xiàn)場離奇詭異,居然都是意外死亡茶宵,警方通過查閱死者的電腦和手機(jī)危纫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乌庶,“玉大人种蝶,你說我怎么就攤上這事÷鞔螅” “怎么了螃征?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長糠赦。 經(jīng)常有香客問我会傲,道長,這世上最難降的妖魔是什么拙泽? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任淌山,我火速辦了婚禮,結(jié)果婚禮上顾瞻,老公的妹妹穿的比我還像新娘泼疑。我一直安慰自己,他們只是感情好荷荤,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布退渗。 她就那樣靜靜地躺著,像睡著了一般蕴纳。 火紅的嫁衣襯著肌膚如雪会油。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天古毛,我揣著相機(jī)與錄音翻翩,去河邊找鬼都许。 笑死,一個胖子當(dāng)著我的面吹牛嫂冻,可吹牛的內(nèi)容都是我干的胶征。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桨仿,長吁一口氣:“原來是場噩夢啊……” “哼睛低!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起服傍,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钱雷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伴嗡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體急波,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年瘪校,在試婚紗的時候發(fā)現(xiàn)自己被綠了澄暮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡阱扬,死狀恐怖泣懊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情麻惶,我是刑警寧澤馍刮,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站窃蹋,受9級特大地震影響卡啰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜警没,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一匈辱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杀迹,春花似錦亡脸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至续语,卻和暖如春垂谢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疮茄。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工埂陆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留苛白,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓焚虱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懂版。 傳聞我的和親對象是個殘疾皇子鹃栽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容