當前位置:首頁 » 編程軟體 » shell腳本ne

shell腳本ne

發布時間: 2023-09-19 01:39:46

⑴ 下面的linux shell腳本中的 $#和-ne是什馬意思嗎求指教。

$# 表示運行腳本時所帶的參數數目,不含腳本文件名自身。
這里的 "Usage: $0 match_text filename" 也說明了運行此腳本需要跟兩個參數。

-ne 表示 not equal,即 不相等。
也就是說,腳本參數不等於2,就提示正確的使用方法並用exit 1退出腳本執行。

⑵ 如何創建一個shell腳本檢查命令行參數個數,如果參數不是三個顯示一條錯誤信息,為三個則顯示參數

1、「shell」中有一個特殊變數「$#」:表示包含參數的個數;

2、「if [ $# -ne 3 ] ; then # 」:如果參數不為3個

3、輸入「if [ $# -ne 3 ];then echo errorelse echo "$1 $2 $3"if」

⑶ shell腳本解答

錯誤:
1. 需要用 test 命令或 [ ] 來測試文件是否可訪問並可讀。
2. 判斷邏輯錯誤,if 與 else 里的內容顛倒。
3. $#表示參數個數,取第一個參數應該用$1。
4. $1最好用""包含起來,以防文件路徑或文件名中有空格。

修改如下:

#!/bin/sh
if [ -r "$1" ]
then
cat "$1"
else
echo "File $1 does not exist or is not readable."
exit 1
fi

exit 0

另外,建議在腳本開頭加上對參數個數的判斷(如下)。

if [ $# -ne 1 ]
then
echo "Error: You MUST input one parameter!"
echo "Usage: $0 {fileName}"
exit 1
fi

因為按照你的表達,只應該有一個參數,就是文件名(文件全路徑)。如果參數個數不是1,需要報錯並提示正確的用法。

⑷ shell定義帶參數的函數

1,Shell中也有函數的概念,但是函數定義中沒有返回值也沒有參數列表 2,shell函數內同樣是用$0、$1、$2等變數來提取參數 3,Shell腳本中的函數必須先定義後調用,也就是定義必須在調用的前面 這也是由於是解釋語言的原因 4,return後面跟一個數字則表示函數的Exit Status#! /bin/sh#如果 傳參是文件名 不是文件夾名稱 那麼返回#沒有形參列表 ()is_directory(){ DIR_NAME=$1 if [ ! -d $DIR_NAME ]; then return 1 else return 0 fi}for DIR in "$@"; do #給函數傳參 if is_directory "$DIR" then : else echo "$DIR doesn't exist. Creating it now..." #如果創建文件失敗 錯誤信息列印到 /dev/null # 2 文件描述符 錯誤信息stderr, 1 文件描述符 輸出信息stdout, 0文件描述符 鍵盤輸入 stdin # 2>&1 也就是將錯誤信息輸出到 /dev/null 別再給我列印出來了 mkdir $DIR > /dev/null 2>&1 if [ $? -ne 0 ]; then # -ne 不等於 echo "Cannot create directory $DIR" exit 1 fi fidone

⑸ shell腳本書寫方法

在shell學習過程中,感覺挺有用的一份比較,略整理分享給大家。

首先,shell的作用

用戶的登陸shell 登陸後默認的shell程序是: /bin/bash

不同的shell內部指令,運行環境會有所區別

常見的shell有

/bin/sh

/bin/bash

/sbin/nologin

1.編寫腳本代碼:

使用vi編輯器,每行一條Linux命令,按照順序執行

2.然後賦予腳本文件可執行的屬性

3.執行腳本文件的三種方法

./chao.sh

sh /chao.sh

source /chao.sh

更完善的腳本構成

注釋信息

可執行語句

重定向操作

類型 操作符 用途

重定向輸入 < 從指定文件讀取而不是從鍵盤輸入

重定向輸出 > 將輸出文件保存到指定文件(覆蓋原有內容)

>> 將輸出文件保存到指定文件(覆蓋原有內容)

標准錯誤輸出 2> 將錯誤信息保存到指定的文件(覆蓋原有內容)

2>> 將錯誤信息保存到指定的文件

混合輸出 &> 將標准輸出,標准錯誤的內容保存到同一文件中

管道操作符號「|」

將左側的命令輸出結果,作為右側命令的處理對象

shell變數的作用

為靈活管理Linux系統提供的特定參數,有兩層意思

變數名:使用固定的名稱,由系統預設或用戶定義

變數值: 能夠根據用戶設置,系統環境的變化而變化

變數的類型

自定義變數:由用戶自己定義,修改和使用

環境變數: 由系統維護,用於設置工作環境

位置變數: 通過命令行給腳本程序傳遞參數

預定義變數:BASH中內置的一類變數,不能直接修改

定義一個新的變數

格式: 變數名=變數值

變數名以字母或下劃線開頭,區分大小寫,建議全大寫

查看變數的值: echo $變數名

賦值時使用引號:

雙引號:允許使用$符引用其他變數值

單引號: 禁止引用其他變數值,$視為普通字元

反撇號:命令替換,提取命令執行後的輸出結果

將鍵盤輸入內容為變數賦值

格式: read [-p "提示信息"] 變數名

設置變數的作用范圍

export 變數名

export 變數名=變數值

兩種格式可以混合使用

整數變數的運算:

expr 變數1 運算符 變數2 [運算符 變數3]

常見的運算符

加法運算符 +

減法運算符: -

乘法運算符:\*

除法運算符: /

取余運算:%

整數變數的運算(2)

((變數=變數運算符變數));

等號後面的變數可以是具體數值

例子:

((a=a+3));

環境變數:

由系統提前創建,用來設置用戶的工作環境

配置文件: /etc/profile ~/.bash_profile

常見環境變數的舉例

位置變數:

表示為$n, n為1~9之間的數字

預定義變數:

/etc/passwd /etc/shadow

例如一些服務的內置用戶名或密碼

如apache的啟動用戶就是預定義變數

條件測試操作

測試特定的 表達式是否成立,當條件成立時,測試語句的返回值為0,否則為其他數值

格式 : test 條件表達式

應用實例:

test -z 進行測試的時候 字元串長度為0的時候 結果才返回1

如果變數數值為0 返回0

條件測試操作

[ 操作符 文件或目錄]

[5] 部分是判斷表達式,-d表示判斷是否是目錄

&&是」邏輯與「操作符,只有&&前面的判斷成立,後面的語句才會執行

-b的意思是判斷 後面的路徑是否是一個目錄

echo $? 表示對剛剛執行的表達式進行判斷

0表示成立,1表示不成立

-e filename 如果 filename存在,則為真 [ -e /var/log/syslog ]

-d filename 如果 filename為目錄,則為真 [ -d /tmp/mydir ]

-f filename 如果 filename為常規文件,則為真 [ -f /usr/bin/grep ]

-L filename 如果 filename為符號鏈接,則為真 [ -L /usr/bin/grep ]

-r filename 如果 filename可讀,則為真 [ -r /var/log/syslog ]

-w filename 如果 filename可寫,則為真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可執行,則為真 [ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,則為真 [ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字元串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)

-z string 如果 string長度為零,則為真 [ -z "$myvar" ]

-n string 如果 string長度非零,則為真 [ -n "$myvar" ]

string1= string2 如果 string1與 string2相同,則為真 [ "$myvar" = "one two three" ]

string1!= string2 如果 string1與 string2不同,則為真 [ "$myvar" != "one two three" ]

算術比較運算符

num1-eq num2 等於 [ 3 -eq $mynum ]

num1-ne num2 不等於 [ 3 -ne $mynum ]

num1-lt num2 小於 [ 3 -lt $mynum ]

num1-le num2 小於或等於 [ 3 -le $mynum ]

num1-gt num2 大於 [ 3 -gt $mynum ]

num1-ge num2 大於或等於 [ 3 -ge $mynum ]

整數值比較

格式: [ 整數1 操作符 整數2 ]

字元串比較

格式1: [ 字元串1 = 字元串2 ]

[ 字元串1 != 字元串2 ]

格式2: [ -z 字元串 ]

邏輯測試:

格式1: [ 表達式1 ] 操作符 [ 表達式2 ]

格式2: 命令1 操作符 命令2

if語句的結構

while語句的語法結構

熱點內容
網頁和資料庫 發布:2024-11-19 04:39:16 瀏覽:786
sql自動編號插入 發布:2024-11-19 04:39:16 瀏覽:750
使用代理伺服器地址和埠怎麼填 發布:2024-11-19 04:33:33 瀏覽:865
discuz資料庫操作 發布:2024-11-19 04:33:22 瀏覽:85
什麼是db資料庫 發布:2024-11-19 04:31:17 瀏覽:552
安卓os耗電過多是怎麼回事 發布:2024-11-19 04:14:56 瀏覽:313
dcs數據存儲多長時間 發布:2024-11-19 04:10:38 瀏覽:950
我的世界手機版租賃服顯示無法連接至伺服器 發布:2024-11-19 04:07:19 瀏覽:55
java起源 發布:2024-11-19 04:02:18 瀏覽:373
才辦的醫保卡密碼是多少 發布:2024-11-19 03:47:57 瀏覽:344