2012-11-21 93 views
0

我們有簡單的Windows批處理文件,當發生錯誤時,將運行「ONCALL.bat」文件以顯示在單獨的oncall.txt文本文件中維護的支持信息。這是我們的SOP。使用Unix Shell腳本重新創建Windows TYPE到控制檯

ONCALL.BAT

set scriptpath=%~dp0 

TYPE "%scriptpath%oncall.txt" 

我有Unix和Shell腳本零經驗,我需要快速提供一個shell腳本相當於在Unix環境中運行。

有人可以請給我這個代碼的.sh等價物嗎?

回答

1
cat oncall.sh 
#!/bin/bash 
scriptpath=/path/to/scripts 

cat ${scriptpath}/oncall.txt 

創建文件後,它不能傷害運行

dos2unix oncall.sh 

只是要確保沒有窗口按Ctrl-M字符,這將完全迷惑你,他們可以擰的方式啓動Unix腳本處理。

THEN

chmod 755 oncall.sh 

爲了使腳本可執行。

確認與

ls -l oncall.sh 

您將看到

-rwxr-xr-x 1 userName grpname 5263 Nov 21 14:44 oncall.sh 

上市最後,調用腳本一個完整或相對路徑,即

./oncall.sh 

OR


第一行被稱爲「認領」行,當你的腳本被調用時,OS讀取文件的第一行,找出程序運行解釋腳本文件的其餘部分。

你可能想/需要作爲第一行的「家當」下面的一個使用,但慶典是一個很好的猜測

#!/bin/ksh 
#!/bin/sh 
#!/bin/ash 
#!/bin/dash 
#!/bin/zsh 

,或者您可能最壞的情況下,你的shell生活在一個非標準目錄,那麼你必須拼出來,即

#!/usr/bin/ksh 

所有外殼支持調試參數的跟蹤和變量擴展類似

#!/bin/ksh -vx 

或者你可以用只是某些行打開debugginng和關閉像鑑於

set -vx 
    cat ${scriptpath}/oncall.txt 
    set +vx 

〜dp專用synt介於%和0之間的ax基本上表示擴展變量%0以顯示驅動器號和路徑,從而爲您提供包含批處理文件的當前目錄!

我覺得/path/to/scripts是一個合理的替代品,scriptpath=$PWD將是一個直接的替代品,因爲有在Unix中沒有驅動器號。那裏的問題是,你要麼依靠unix PATH var找到你的腳本,要麼你運行cd /path/to/scripts,然後運行./oncall.sh,使用相對路徑./找到沒有naving的文件爲PATH添加了一個值。 IHD。

IHTH。

+0

[%〜dp0是什麼意思,它是如何工作的?](http://stackoverflow.com/questions/5034076/what-does-dp0-mean-and-how-does-it-work) – andrewdotn

+0

@andrew:謝謝! – shellter

1

假設幫助文件和腳本是在同一目錄下:

#!/bin/sh 

SCRIPTPATH=`dirname "$0"` 

cat "$SCRIPTPATH"/oncall.txt 

$0是當前腳本的文件路徑; dirname命令提取它的目錄部分。通過這種方式,您可以避免在腳本中使用幫助文件的硬編碼路徑。