當前位置:首頁 » 辦公資訊 » shell怎樣調用cfg文件

shell怎樣調用cfg文件

發布時間: 2022-12-16 18:02:15

『壹』 在linux 用shell腳本調用C語言的執行文件,用到什麼函數,求大神幫分析一下

c調用shell為system(cmd)
shell調用c執行文件和調用普通的命令一樣,如 ls cd pwd等命令都是c寫的執行文件

『貳』 aix shell如何讀取配置文件

awk即可, 或者用while read讀文件然後取出來信息在第二個文件在匹配也行

『叄』 shell腳本中如何獲取cfg.txt文件中一個字元串後面的參數

實驗:

echo "TAG_BXXX_DBG = 0
TAG_CXXXXXX_DBG = 1
TAG_DXXXXXXX_DBG = 0 "|grep TAG_CXXXXXX_DBG|cut -d '=' -f 2

你的要求:

cat cfg.txt |grep TAG_CXXXXXX_DBG|cut -d '=' -f 2

『肆』 shell腳本怎麼調用其他shell腳本

在Shell中要如何調用別的shell腳本,或別的腳本中的變數,函數呢?

方法一: . ./subscript.sh
方法二: source ./subscript.sh
注意:
1.兩個點之間,有空格,千萬注意.
2.兩個腳本不在同一目錄,要用絕對路徑
3.為簡單起見,通常用第一種方法
例如:

復制代碼代碼如下:

main.sh #主腳本
subscripts.sh #子腳本,或者說被調腳本
[code]
[code]
###subscripts.sh 腳本內容如下:###

#!/bin/bash
string="Hello,World! \n"

復制代碼代碼如下:

###main.sh 腳本內容如下###

#!/bin/bash
. ./subscripts.sh
echo -e ${string}
exit 0

輸出結果:

復制代碼代碼如下:

# chmod +x ./main.sh
# ./main.sh
Hello,World!
#

『伍』 shell程序的作用是什麼什麼是shell過程

shell作為UNIX的一個重要組成部分,是它的外殼.也是用戶與UNIX系統的交互作用界面.Shell是一個命令解釋程序.除此,它還是一個高級程序設計語言.
用shell編寫的程序稱為shell過程。

『陸』 寫一個shell腳本,讀取配置文件算出配置文件中是數字的和。 配置文件sum.conf 1 a 2

給你舉個例子吧,下面是我寫的一個讀取配置參數的問題
其中 for i in `cat $V_CFG_DIR/tab_tmp2.cfg` 是讀取配置文件tab_tmp2.cfg
如果你參數的名字需要通過參數來傳遞的話那就改下,添加一個參數並把tab_tmp2.cfg換成你添加的參數(就像參數V_DATA_DATE一樣通過外部傳入),另外加法求和你網路下就可以搞定了,快看看吧,有詳細的注釋

#############################################################
#功能:裝載指定目錄數據
#作者:PENGWEI
#時間:2015-11-18
#############################################################
# 數據日期參數,待傳入
V_DATA_DATE=$1
#FTP完成後數據存放路徑
V_DATA_DIR=/home/almusr/data/odsdata/FTP/$V_DATA_DATE
# FTP完成後生成的標志文件所在路徑
V_FTP_FLAG=/home/almusr/data/etl_load/FTPOK
# 解壓數據前備份數據的存放路徑
V_DATA_BAK=/home/almusr/data/odsdata/odsdata_bak
# 配置文件存放路徑
V_CFG_DIR=/home/almusr/cfg
#日誌文件
LOGDIR=/home/almusr/log/Loaddata_log
LOGFILE=$LOGDIR/LoadData_$V_DATA_DATE.log
# 初始化系統參數
DBNAME=ALMDB
USER=almusr
PASSWORD=almusr
SCHEMA=ODSUSR
#如果 日誌目錄不存在
if [ ! -d "${LOGDIR}" ]
then
#建立目錄
mkdir -p "${LOGDIR}"
fi
#\n --回車
echo "\n日誌文件[$LOGFILE]\n"
#日誌函數
recordLog()
{
echo `date +"%Y-%m-%d %T"`": $1" | tee -a $LOGFILE
return 0
}
#判斷參數個數
if [ $# -ne 1 ]
then
recordLog "Usage:$0 directory"
exit 1
fi
# $?表示上述命令執行後返回的狀態(執行成功返回0 執行不成功返回非0)
if [ $? -ne 0 ]
then
recordLog "cd $V_DATA_DIR error !"
exit 1
fi
#連接資料庫
db2 connect to $DBNAME user $USER using $PASSWORD
if [ $? -ne 0 ]
then
recordLog "connect[$DBNAME] fail!"
exit 1
fi
#載入數據

RETVAL=0
for i in `cat $V_CFG_DIR/tab_tmp2.cfg`
do
#讀取表名並輸出
TABLE_NAME=`echo $i | awk -F "," '{print $1}'`

#讀取文件後綴名並輸出
echo " the table_name is $TABLE_NAME"

#拼接文件名
FILENAME=${TABLE_NAME}.del
#解壓縮 臨時變數
FILENAME_TMP=$FILENAME.gz

echo "the FILENAME is $FILENAME"

recordLog "the FILENAME $FILENAME!"

# 第一步:對壓縮文件備份,先掃描FTP完成標志,如果存在就說明FTP過程已結束,開始備份,否則等待繼續掃描
#進去FTP完成標志所在目錄
cd $V_FTP_FLAG
#掃描FTP完成標志
if [[ ! -e "${V_DATA_DATE}.ok" ]]; then
sleep 1800
else
cd $V_DATA_BAK
#備份文件
cp -r $V_DATA_DIR ${V_DATA_DATE}_bak
cd ${V_DATA_DATE}_bak
rm -rf ${V_DATA_DATE}

fi
recordLog "Copy data was finished"
# 第二步:刪除30天前的備份數據
v_BakFileDate=`date -d "- 30 day ${V_DATA_DATE}" +%Y%m%d`

cd $V_DATA_BAK
rm -rf ${v_BakFileDate}_bak
recordLog "Removed the bak_data of 30 days before!"

# 第三步:對文件進行解壓
cd $V_DATA_DIR

if [ -f $FILENAME_TMP ]
then
echo "$FILENAME_TMP must gunzip"

#解壓文件
gunzip $FILENAME_TMP

echo "$FILENAME_TMP ,gunzip success"

else
echo "$FILENAME exist,next step"
recordLog "$FILENAME exist,next step!"
fi

# 第四步:數據載入
if [ -f $FILENAME ]
then
# CMD="db2 \"load from $FILENAME of del MODIFIED BY coldel0x23 usedefaults keepblanks decpt. replace into ODSUSR.$TABLE_NAME data buffer 10000\" > $LOGDIR/$TABLE_NAME_XX.log 2>&1"
CMD="db2 \"load from $FILENAME of del replace into ODSUSR.$TABLE_NAME data buffer 10000\" > $LOGDIR/$TABLE_NAME.log 2>&1"
echo "$FILENAME is loading"
eval $CMD

fi

echo "load data is over"

recordLog "load data is over"

# 第五步:判斷載入是否正確
#判斷是否正常載入
read_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows read" | awk -F'=' '{print $2}'`
skip_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows skipped" | awk -F'=' '{print $2}'`
load_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows loaded" | awk -F'=' '{print $2}'`
reject_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows rejected" | awk -F'=' '{print $2}'`
delete_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows deleted" | awk -F'=' '{print $2}'`
commit_num=`cat $LOGDIR/$TABLE_NAME.log | grep "Number of rows committed" | awk -F'=' '{print $2}'`

echo "$read_num,$skip_num,$load_num,$reject_num,$delete_num,$commit_num"

#條件判斷載入是否正確
if [[ "$read_num" -eq "$load_num" && "$load_num" -eq "$commit_num" ]]
then
echo "Data loading is perfect!"
else
cat $LOGDIR/$TABLE_NAME.log
recordLog "loading [$V_DATA_DIR/$TABLE_NAME] error!"
RETVAL=1
continue
fi
done
db2 connect reset >/dev/null 2>&1
if [ $RETVAL != 0 ]
then
recordLog "load data directory [$V_DATA_DIR] error!!!"
else
recordLog "load data directory [$V_DATA_DIR] successful!!!"
fi
# 第五步:完成退出

exit 0

你把這個問題看懂了估計你那個就沒問題了
有什麼問題再交流

『柒』 shell腳本,求大神詳細解答一下這個腳本的功能(參數設置方式),謝謝! (Linux下測試VDBench用的)

這個腳本大致流程是這樣的:

  1. 腳本需要傳入一個磁碟名稱的參數賦值給dev變數

  2. 通過函數config來生成配置文件wd.cfg, 這些配置文件的參數你可以去參考下vdbench命令

  3. 最終執行磁碟性能測試命令 ./vdbench -f wd.cfg 生成一個4K_write_ran_"當前時間" 的一個報告文件

『捌』 用什麼軟體可以打開RES或CFG文件

RES
1、游戲中的應用
RES只是一個文本文檔,其中包含一個文件列表。RES文件同BSP文件相對應。它用來通知HALF-LIFE伺服器向客戶端發送他們缺少的特定文件。除了後綴.RES,它必須和你的BSP文件名完全相同。因此,如果你的地圖名為cs_mymap.bsp,那麼你應該創建一個名為cs_mymap.res的文件。還有,BSP文件和BSP文件必須存放在同一目錄下。也就是說,都應該放在MOD根目錄下的"/maps"文件夾中。
RES文件的工作流程如下:
1.伺服器更換成你自定義的地圖,或者當自定義地圖開啟時客戶端連接到你的伺服器
2.伺服器查找跟地圖名(BSP文件)同名的RES文件
3.伺服器調用RES文件,並按照其中的文件列表查找圖片、聲音等等需要發送往客戶端的文件。
4.如果客戶端沒有這些指定的文件(或者存在同名文件但數據、大小不同),那麼伺服器將他們發送到客戶端。
5.RES文件中提及的所有文件被下載完成後,客戶端連接到伺服器,並進入游戲。
在商務、私人社交上
RES 通常印在名片上,表示宅電,其全稱是Residence
[編輯本段]2、Microsoft Internet Explore中的應用
當Win2003安裝完畢時,默認是開啟了Internet Explorer 增強的安全配置,可以在 控制面板--添加刪除程序--組件中將其刪除。
當開啟「增強的安全配置」後,每次在用戶打開網頁時,系統都會自動調用C:\Windows\System32下的shdoclc.dll文件(動態鏈接庫),從此文件中解壓、調用一個hardAdmin.htm的Web頁面,顯示給用戶。顯示的路徑是:res://shdoclc.dll/hardAdmin.htm(注意:不是HTTP)
RES狀態下的網頁附上一些官方的資料:
shdoclc - shdoclc.dll - DLL文件信息
DLL 文件: shdoclc 或者 shdoclc.dll
DLL 名稱: Microsoft Shell Doc Object and Control Library
描述:
shdoclc.dll是為Windows應用程序添加基礎文件和網路操作相關模塊。
屬於: Microsoft Windows
系統 DLL文件: 是
常見錯誤: File Not Found, Missing File, Exception Errors
安全等級 (0-5): 0
間諜軟體: 否
廣告軟體: 否
[編輯本段]3、Windows程序資源文件

(1)作用

RES文件在Windows編程中被稱為資源文件,用於存放字元串、程序圖標、其他引用圖片。Delphi的每個主程序中都含有{$R *.RES}指示字,表示家在於程序同名資源文件中存放的程序圖標。巧妙地利用資源文件對於編程有意想不到的作用。

(2)RES文件的生成

RES文件是由RC文件編譯而來的,請看以下RC文件示例:
文本文件「MyMusic.RC」:
SRC1 FILE1 OnlyYou.mp3
SRC2 FILE2 YesterdayOnceMore.mp3
SRC3 FILE3 MoonRiver.mp3
//另例:
//mycur cursor move.cur //加入游標
//mypic Bitmap Water.BMP //加入點陣圖
//mywav WAVE happy.wav //加入聲音
//myAVI AVI EPOEN.AVI //加入視頻
//myIco ICON CJT.ICO //加入圖標
其中,每一行表示聲明一項資源,每一項資源的聲明包含三個參數定義,第一個參數是資源的名稱,第二個參數是資源的類型描述(本例定義了三類),第三個參數是文件名。參數之間必須由空格隔開。
編寫完成「MyMusic.RC」文件後,將其與上述三個.MP3文件放置在同一文件夾中(為了避免由設置路徑帶來的麻煩)。然後以下面的命令行運行應用程序brcc32.exe(位於..\Delphi6\Bin):brcc32 mymusic.rc需要注意的是,該命令只能在命令行方式下執行。如果系統的PATH環境變數中不包含Delphi的運行路徑,那麼你還需要將brcc32.exe與MyMusic.RC、三個.MP3文件放置在同一路徑中進行。運行上述命令行後,將在同一路徑中得到文件「MyMusic.RES」,這就是一個獨立完整的資源文件。

(3)RES文件的載入

你只需要在項目中的某個單元中(最好是你需要利用這些資源的單元,這樣會使你的應用程序更具有可讀性)加入如下編譯指示:
{$R MyMusic.RES}
盡管該編譯指示可以位於單元的任何位置,但為了使你的源代碼結構合理,最好還是將其並列位於編譯指示「{$R *.dfm}」(每個含有窗體文件的單元中都含有該行編譯指示)。這里的編譯指示就明確告訴編譯器,在編譯應用程序時需要將資源文件「MyMusic.RES」包含到應用程序中。

(4)資源文件的還原

下面的過程將告訴你如何將應用程序中包含的資源(文件)重新還原。
procere MusicResToFile(const ResName, ResType,FileName: string);
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(HInstance,ResName, PChar(ResType));
Res.SaveToFile(FileName); //將資源保存為文件,即還原文件
//你還可以進行其它的流操作,在內存中實現對資源利用而不必另存為文件
Res.Free;
end;
調用該過程的示例如:
MusicResToFile('SRC2', 'FILE2', 'TheSecondMusic.MP3');
值得一提的是,利用此方法,你完全可以製作自己的安裝程序,該安裝程序僅包含一個可執行文件,在該可執行文件中以資源的形式包含所有將要安裝的內容(文件)。此外,如果在你的應用程序中需要播放外部音頻文件(如背景音樂、聲音提示等),也可通過此方法將這些外部文件包含到應用程序中,從而避免用戶誤刪這些音頻文件導致應用程序的不完整。

(5)RES文件的調用

資源文件在Delphi中的關鍵字為hinstance.下面給出具體用法.
<1>游標的調用
首先在程序中定義一個值大於0的常量,因為Delphi本身用0-負16來索引默認
的游標,所以我們制定的游標應從表面上1開始索引。然後在窗口的Oncreat事件
中添加以下代碼:
screen.cursor[35]:=Loadcursor (hinstance,'mycur');
其中35為大於1的常量,mycur為游標在資源文件中的名字。如果希望在其他控
件上使用定製游標,例如Panel控制項,只需在程序的適當處加入以下代碼:
Panel1.cursor:=35;
<2>點陣圖的調用
新建一項工程,添加一Timage控制項,在需要顯示的地方寫以下代碼:
Var mymap:Hbitmap;
begin
mymap:=LoadBitmap(hinstance,'mypic');
Image1.picture.Bitmap.Handle:=mymap;
end;
其中"mypic"為點陣圖資源文件中的名稱。
〈3〉AVI文件的調用
新建一工程,添加一Animate控制項,在需要的地方加入:
animater1.resname:='myAVI';
animater1.Active:=true;
其中myAVI為視頻文件在資源文件中的名稱。
〈4〉調用WAV文件
在uses中加入mmsystm單元,以便在程序中播放WAV文件。播放時
Playsound(pchar('mywav'),hinstance,sndsync or snd_resource);
其中mywav為聲音文件在資源中的名稱。
〈5〉加入游標
加入游標比較容易,只要將res文件加入單元文件中即可。但需注意,名稱最好
取"W"."WW"等,使第一個字母盡量靠後,以免與主程序的圖標順序顛倒。這樣一
來,別人在使用你的程序時如果想選擇其它圖標就有很多選擇了。
補充:
1.資源類型除上述類型外,還可以字體文件,字元串文件等。
2.資源文件不但可以在標准圖形界面下使用還可在控制台下使用。
下面我們來試驗一下:
新建一工程,將唯一的一個Form刪除,然後修改工程文件。增加一句{$Apptype console},在uses子句中加入mmsystem,並將其它引用單元刪掉。將Begin和end之間語句刪掉。至此,我們就可和Turbo PASCAL下編程序一樣,且還可以調用windows的API和資源。將資源文件----{$R myfist.res}加入。在Begin和end之間寫下:
writeln('演示程序,按任意鍵開始!');
readln;
playsound(pchar('mywav'),hinstance,snd_sync or snd_resource);
writeln('演示結束!');
運行程序,將彈出一個標准DOS窗口,按任意鍵播放聲音文件。是不是很COOL呢!

cfg
CFG:控制流圖(Control flow graph)
控制流圖(CFG)是用在編譯器中的一個抽象數據結構。它是一個過程或程序的抽象表現,由編譯器在內部維護。每個在圖形中的節點代表一個基本塊,例如,沒有任何跳躍或跳躍目標的直線代碼塊;跳躍目標以一個塊開始,和以一個塊結束。定向邊緣被用於代表在控制流中的跳躍。在那裡,在大部分介紹中,兩個特定的設計塊:項目塊,通過它控制到流圖的輸入,和編輯塊,通過它全面控制流輸出。
-----------------------------------------------------------
.cfg:迅雷下載配置文件的後綴名
使用迅雷開始下載的時候,迅雷會根據所下載的文件創建兩個文件:*.td和*.td.cfg,這兩個文件是迅雷的臨時下載文件和配置文件,在*.td文件里是正在下載的數據,*.td.cfg文件是下載數據的配置文件,記錄了配置信息,如線程、存放目錄、用戶名、 密碼等。當文件下載完成後,迅雷會自動將*.td.cfg配置文件刪除,並將*.td臨時下載文件的後綴名.td去掉,變成所要正確下載的文件。如果下載文件的格式是td的,說明這個文件還沒有下載完,請繼續下載。
------------------------------------------------------------
CFG(Content-Free Grammar,上下文無關文法)
上下文無關文法(Content-Free Grammar, CFG)
在計算機科學中,若一個形式文法 G = (N, ∑, P, S) 的產生式規則都取如下的形式:V -> w,則稱之為上下文無關的,其中 V∈N ,w∈(N∪∑)* 。上下文無關文法取名為「上下文無關」的原因就是因為字元 V 總可以被字串 w 自由替換,而無需考慮字元 V 出現的上下文。一個形式語言是上下文無關的,如果它是由上下文無關文法生成的(條目上下文無關語言)。
上下文無關文法重要的原因在於它們擁有足夠強的表達力來表示大多數程序設計語言的語法;實際上,幾乎所有程序設計語言都是通過上下文無關文法來定義的。另一方面,上下文無關文法又足夠簡單,使得我們可以構造有效的分析演算法來檢驗一個給定字串是否是由某個上下文無關文法產生的。例子可以參見 LR 分析器和 LL 分析器。
BNF (巴克斯-諾爾範式)經常用來表達上下文無關文法。
上下文無關文法重要的原因在於它們擁有足夠強的表達力來表示大多數程序設計語言的語法;實際上,幾乎所有程序設計語言都是通過上下文無關文法來定義的。另一方面,上下文無關文法又足夠簡單,使得我們可以構造有效的分析演算法來檢驗一個給定字串是否是由某個上下文無關文法產生的。例子可以參見 LR 分析器和 LL 分析器。
文法規則使用相似的表示法。名字用斜體表示(但它是一種不同的字體,所以可與正則表達式相區分)。豎線仍表示作為選擇的元符號。並置也用作一種標准運算。但是這里沒有重復的元符號(如正則表達式中的星號*),稍後還會再講到它。表示法中的另一個差別是現在用箭頭符號「→」代替了等號來表示名字的定義。這是由於現在的名字不能簡單地由其定義取代,而需要更為復雜的定義過程來表示,這是由定義的遞歸本質決定的。
同正則表達式類似,文法規則是定義在一個字母表或符號集之上。在正則表達式中,這些符號通常就是字元,而在文法規則中,符號通常是表示字元串的記號。我們利用C中的枚舉類型定義了在掃描程序中的記號;為了避免涉及到特定實現語言(例如C)中表示記號的細節,就使用了正則表達式本身來表示記號。此時的記號就是一個固定的符號,如同在保留字 while 中或諸如+或: =這樣的特殊符號一樣,對於作為表示多於一個串的標識符和數的記號來說,代碼字體為斜體,這就同假設這個記號是正則表達式的名字(這是它經常的表示)一樣。

熱點內容
馬路上汽車的噪音在多少分貝 發布:2023-08-31 22:08:23 瀏覽:1974
應孕棒多少錢一盒 發布:2023-08-31 22:08:21 瀏覽:1444
標准養老金一年能領多少錢 發布:2023-08-31 22:05:05 瀏覽:1729
湖北通城接網線多少錢一個月 發布:2023-08-31 21:59:51 瀏覽:1805
開隨車吊車多少錢一個月 發布:2023-08-31 21:55:06 瀏覽:1571
京東付尾款怎麼知道前多少名 發布:2023-08-31 21:52:58 瀏覽:1897
在學校租鋪面一個月要多少錢 發布:2023-08-31 21:52:09 瀏覽:2035
2寸有多少厘米 發布:2023-08-31 21:50:34 瀏覽:1681
知道電壓如何算一小時多少電 發布:2023-08-31 21:46:20 瀏覽:1667
金手鐲54號圈周長是多少厘米 發布:2023-08-31 21:44:28 瀏覽:1832