当前位置:首页 » 办公资讯 » 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