shell腳本ifthen
① shell 中 if[X$1 = X];then 什麼意思
if[x$1 = x];中$1表示運行shell時傳的第一個參數。
即:如果有一個shell文件名為test.sh那麼運行命令為
./test.sh a b
其中a為第一個參數b為第二個參數$1就代表的是a這個字母。
在if[x$1 = x];中實際就會判斷 xa = x
這樣寫的主要目的是當如果寫成["$1" = "$2" ] 在 $1,$2為空時會在某些bash版本中出現編譯錯誤所以運用了shell中的字元抵消原則。
說簡單點就是一種規則,你看代碼不管X就行。
② 如何使用shell 腳本語法書寫 if 分支語句
和C語言類似,在Shell中也可以實現分支語句。用if、then、elif、else、fi這幾條命令實現分支控制。這種流程式控制制語句本質上也是由若干條Shell命令組成的,例如:
?#! /bin/sh
??
?if [ -f ~/.bashrc ]; then
? . ~/.bashrc
?fi
目前在黑馬程序員學習C/C++,還不會用,然後在社區查了一下,分享給你,如果你有什麼不了解的,也可以去查一下,看一看啊
③ shell腳本中的if中多條件語句如何寫。
可以使用 if-elif-else 語法來寫多條件語句。
1、首先要理解if-else的基本用法,if條件+then操作+else操作+fi閉合,書寫方法如下:

2、 shell語法中[[ ]]和[ ]的主要區別
(1) [ ] 實際上是bash 中 test 命令的簡寫。即所有的 [ expr ] 等於 test expr。
對 test 命令來說, 用 -eq 要進行數字比較,而你此時傳入字元串,就報錯了。
(2) [[ ]] 是內置在shell中的一個命令,它比test強大的多。支持字元串的模式匹配(使用=~操作符時甚至支持shell的正則表達式)。邏輯組合可以不使用test的-a,-o而使用&& ||。
④ shell腳本if then else的問題
問題出在echo("true")或者echo("false")這一句,ftp裡面不支持,你手動執行一下就知道了。
ftp>echo("true")
?Invalidcommand
ftp>help
Commandsmaybeabbreviated.Commandsare:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cp image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
⑤ 在SHELL腳本里看到 if [ $# -lt 7 ]; then ,請高手詳細解釋
$#取得shell腳本參數個數,
-lt即lessthan,小於,
$0取得腳本名稱(包含路徑)
若判斷參數個數小於7個,則用echo列印正確的使用方法,並用exit退出腳本。
Usage:腳本名稱subjectanalysis_diranat_nameanat_dir_namesanlm_denoisednum_scansgcut
後面分別是7個參數。
其實,通常用`basename$0`來去除路徑得到純粹的腳本名,並且在退出腳本時將返回狀態置為非0。
if[$#-lt7];
then
echo-e" Usage:`basename$0`subjectanalysis_diranat_nameanat_dir_namesanlm_denoisednum_scansgcut "
exit1
fi
⑥ 在SHELL腳本里看到 if [ $# -lt 1 ]; then ,$#是什麼意思
是表示調用這個腳本時提供的參數個數。
這句話是指,當調用該腳本沒有提供參數時該如何處理
⑦ 如何將if then fi 寫成一行shell
這種寫法在shell里叫參數替換
$1是行參變數,也就是腳本執行時的第一個參數。
${1:-NULL}意思是當$1為空時,自動將NULL替換成$1所要帶入的變數值。
以下引用ABS里的一段話
${parameter:-default} -- 如果變數parameter沒被設置, 那麼就使用默認值.
⑧ shell if then 總是報錯
變數前後各留一個空格
例如:
if [ $a -eq $b ];then或者if (($a==$b));then
⑨ shell 腳本 if 的用法小問題
1. 執行shell腳本的時候加上 -x ,執行腳本時會把過程列出來!(有利於我這種新手學習)sh -x shell (./shell 也可以執行shell腳本 但是沒有-x參數)2. 傳的值的個數大於 read 定義的接受變數的時候會把多餘的值都給最後一個變數!!3. expr 對整數型變數進行運算 如果運算結果不是整數小數點後面的全部省去 (乘號要用轉意字元'/') .4. 在shell腳本裡面 執行一條輸出的命令(pgrep mysqld)怎麼吧輸出的結果作為值賦給變數?web=$(/usr/bin/pgrep mysqld) #可以用 變數=$(命令) 和 變數=`命令` 來吧命令執行的結果賦給變數
if [ $web = ]
then
/etc/init.d/mysql start
fi
5.查看某個命令所在的位置可以用 whereis /which/type 三個命令來查看6.awk命令的應用作用:分段提取! (一行為單位來進行分段)awk -F [分隔符] '條件 動作' /對象例: awk -F : '$3==0 {print $1}' /etc/passwd例: awk -F : '$1 == root {print $1} ' /etc/passwd# -F : 用:分割passwd每行的內容 ($1 指第一段內容 $2 指第二段內容$n 指第n段內容)# ' 匹配 動作' 單引號裡面寫的是 匹配命令和列印動作 匹配$3==0 第三段等於0 列印{print $1} 列印第一段內容 ($3 == 0 匹配出行 在列印出這些行的第一段內容 )
⑩ shell腳本中: if [ -f /FileA -a -O /FileB ]; then 語句中判斷條件怎麼理解,邏輯關系是什麼
-a是and,左右條件兩者都成立
-o是or,左右條件任意一條成立
