linux腳本while循環
A. 在linux shell script里。 while 循環。鳥哥的例子 while [ "y
"yn"既不與小寫的"yes"相等,也不與大寫的"YES"相等,當然成立了
B. linux shell腳本:while循環中調用另一個腳本遇到exit為什麼會跳出循環,且繼續執行循環後的程序
exit是在被調用的腳本裡面,肯定會退出被調用的腳本了。如果不想繼續執行while循環後面的程序可以在do後面的條件上加上break
C. linux 用while循環 做腳本 顯示 『』hi『』 5次. 求
#!/bin/bash
num=0
while[$num-lt5]
do
echohi
letnum++
done
D. 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
E. linux shell腳本while編程的問題
這個在句法上有問題,在「[]」要與判斷條件之間要有空格。
另外,就是你這個循環語句是一個死循環,最好是加一個判斷語句,好跳出循環。
F. 菜鳥問一個linux shell 程序中的while循環
for
i
in
`cat
$dictlst`;do
#循環取出字典內容
{
grep
$LINE
a.txt
>>a2.txt
}
&
done
1L的是機器發的,自動匹配過來的,所以問的跟答的根本對不上
G. linux中shell編程,在while循環體中sqlplus如何在屏幕輸出字元串與變數
在sqlplus中輸出字元內容用以下方法
dbms_output.put_line('已刪除5000條')
但是為了在屏幕上看到字元,還需要
set serverout on
比較麻煩,建議你還是用shell實現好,直接echo就好了。
H. linux shell 中while循環問題
你再檢查一下別的地方,我這邊運行你的腳本,一切正常啊。
你要怎樣的死循環啊?
這個腳本只有輸入錯誤才會一直一直讓你輸入,當你輸入了
y,yes,n,no,函數就return了呀
y|yes)return0;;
n|no)return1;;
*)echo"Answeryesorno"
看到沒,這里有return的。
I. 求解答關於linux中shell的while腳本用法
#!/bin/sh
num=1
while [ $num -le 10 ]
do
SUM =' expr $num \* $num ' #SUM等號之間不能有空格 ,等號後面語句單引號換成反引號
echo $SUM
num =" expr $num +1 " #這一行雙引號換反引號 ,1與+號之間有空格。
done
shell的語法檢查是比較嚴格的,尤其是空格以後多注意
J. Linux shell 條件語句while 條件的 寫法
#可以使用正則表達式。
#寫個簡單腳本測試一下:
#!/bin/sh
CenterNumber=123
while[$CenterNumber=[:digit:*]]
do
echo"a"
sleep1
done
#執行結果如下:
希望可以幫助到你!