当前位置:首页 » 编程软件 » linux脚本跳不起循环

linux脚本跳不起循环

发布时间: 2022-04-23 05:30:08

1. linux 脚本循环

>moosewoler,你好,我的问题其实主要集中在这里:
>linux中的参数是相当于C语言中的宏还是变量呢.
shell脚本的变量会根据使用情况自动变化,有的时候行为像宏,有的时候像变量

>如果是宏的话就会完全匹配.例如: 我想用到一堆变量: >iData21,iData22,iData23....iData99
>这个时候我定义 iDataX 然后让 X =21~99 循环,这样可以吗?如果是C语言是不可以的,因为21~99并非完整的一个变量,而是变量的一部分.
是可以这样做的,将两个变量联合起来用就可以了,然后exec出去。
给你个链接《bash新手指南》,很短,很容易入门
http://www.bsdmap.com/manuals/bash_guide/index.html

使用说明:
脚本枚举目录中所有文件,并调用LtoT.exe来处理之。
文件名严格以X_nnnn.DAT命名
其中
X取值为 “C”或者“Y”
nnnn取值为 4位数字
“_”和“.”作为awk使用的分割符一定要存在,否则会出错。

可能存在的问题:
因为LtoT.exe和sdram422bmp.exe也被放在了当前目录下,所以这两个文件也会被脚本处理,也就是说会出现如下两个命令行
./LtoT.exe LtoT.exe LtoT_tile.exe 16 2048 LtoT.exe
./LtoT.exe sdram422bmp.exe sdram422bmp_tile.exe 16 2048 sdram422bmp.exe
不过因为第2个循环的条件检验够强,所以不会影响到第2个循环的输出。

脚本全文如下:
#! /bin/sh

BIN1="./LtoT.exe"
BIN2="./sdram422bmp.exe"

#枚举当前目录下的文件名,并生成参数列表
for FILENAME in `ls` ;do
if [ "$FILENAME" != "a" ]; then
flag=`echo $FILENAME | grep tile`
flag=`echo $?`
if [ "$flag" != "0" ]; then
tmpARG1=`echo $FILENAME`
tmpARG2=`echo $FILENAME | awk 'BEGIN { FS="."} {print $1 "_tile." $2}'`
tmpARG3="16"
tmpARG4="2048"
tmpARG5=`echo $FILENAME | awk 'BEGIN { FS="_"} {print $1}'`
#执行之
`$BIN $tmpARG1 $tmpARG2 $tmpARG3 $tmpARG4 $tmpARG5`
fi
fi
done

for FILENAME in `ls | grep "^Y.*tile"` ;do
tmpARG1="2048"
tmpARG2="16"
tmpARG3="16"
tmpARG4=$FILENAME
tmpARG5=`echo $FILENAME | sed 's/^Y/C/'`
tmpARG6=`echo $FILENAME | awk 'BEGIN { FS="_" } {print "result_"$2".bmp"}'`

`$BIN $tmpARG1 $tmpARG2 $tmpARG3 $tmpARG4 $tmpARG5 $tmpARG6`
done

模拟显示结果(我只是ECHO出来,_tile文件提前建立好了,你可以不必):
moose@iMove:~/tmp$ ls -l
total 4
-rwxr--r-- 1 moose moose 978 02-19 20:19 a
-rw-r--r-- 1 moose moose 0 02-19 19:40 C_0026.DAT
-rw-r--r-- 1 moose moose 0 02-19 20:00 C_0026_tile.DAT
-rw-r--r-- 1 moose moose 0 02-19 19:40 Y_0039.DAT
-rw-r--r-- 1 moose moose 0 02-19 20:00 Y_0039_tile.DAT
moose@iMove:~/tmp$ ./a
./LtoT.exe C_0026.DAT C_0026_tile.DAT 16 2048 C
./LtoT.exe Y_0039.DAT Y_0039_tile.DAT 16 2048 Y
./sdram422bmp.exe 2048 16 16 Y_0039_tile.DAT C_0039_tile.DAT result_0039.bmp

2. linux shell脚本的循环

for i in $(cat test)
可以试试看, for之前可以指定分隔符号.
另外一般用 while read 读取文件

还有其实上面两种都不好, 现在主流的做法还是awk和sed处理文件, 功能强 安全
这样可以么?

3. 关于linux的shell脚本,无限循环问题

10毫秒起一个java,1秒就起来100个java,
10秒就启动了1000个java

4. linux shell脚本:while循环中调用另一个脚本遇到exit为什么会跳出循环,且继续执行循环后的程序

exit是在被调用的脚本里面,肯定会退出被调用的脚本了。如果不想继续执行while循环后面的程序可以在do后面的条件上加上break

5. 熟悉linux中cshell脚本的朋友帮忙解惑,这个循环出问题了

if($overrun != 1)then 加上空格改成
if ( $overrun != 1 ) then 试试

6. linux远程登陆的shell脚本for循环无结果

我比较认同“ssh之后是远程主机执行的命令
本地变量不起作用”这种说法
你的脚本之所以$aaa能回显,是因为在本地定义了这个变量,但本地没有定义$i这个变量,所以无法显示变量值,把aaa="u1 u2"一块塞<<ff.......ff这个内联重定向数据中去。再试试看。

7. shell while 为何不跳出循环

do语句要提前一行。
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:while command
do
Statement(s) to be executed if command is true
done
命令执行完毕,控制返回循环顶部,从头开始直至测试条件。

8. 求linux脚本思路,跳出循环问题

我的想法是这样的,
你应该有一脚本执行你上面写的循环,
然后有另一人脚本负责启动停止.
启动时把第一个脚本执行起来就可以了.
停止时,查找第一个脚本的PID
然后KILL掉就可以了.

9. 关于linux shell脚本中for循环的问题

你的变量指定的有问题。你可以这么写:
#!/bin/bash
for i in $( seq 1 100 )
do
echo $i
done

热点内容
小电影源码 发布:2025-04-04 05:25:06 浏览:652
超声波雾化压缩雾化 发布:2025-04-04 05:18:39 浏览:438
java析构 发布:2025-04-04 05:18:39 浏览:658
kms服务器新地址 发布:2025-04-04 05:18:30 浏览:836
密码相机多少钱一台 发布:2025-04-04 05:11:16 浏览:324
linux网络不通 发布:2025-04-04 05:08:46 浏览:336
更新r星服务器电脑坏了 发布:2025-04-04 04:59:08 浏览:689
服务器搭建需要多久 发布:2025-04-04 04:51:35 浏览:674
云电脑服务器异常 发布:2025-04-04 04:50:01 浏览:810
源码交易程序 发布:2025-04-04 04:40:35 浏览:238