日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基础的shell编程问题(一)

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础的shell编程问题(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題目一
    • 題目描述
    • 代碼實現
      • 關于$#的有關內容
    • 實測
    • 本程序的作用
  • 題目二
    • 題目描述
    • 代碼實現
    • 注釋
    • 關于argc、argv
    • 關于read函數
      • 關于文件描述符
    • 關于write函數
    • 本程序的作用
  • 題目三
    • 題目描述
    • 代碼實現
    • 實測
    • 關于grep命令
    • 關于read命令
  • 題目四
    • 題目描述
    • 代碼實現
    • 關于test命令
    • 實測


題目一

題目描述

請給下面的shell程序加注釋,并說明程序的運行結果。


代碼實現

#!/bin/bash #bash script programming if test $# == 0 # 參數個數為0(沒有給出參數) thenls -l|grep '^d' # 尋找并顯示當前目錄中以d開頭的字符串,即目錄文件 else # 參數個數不為0(給出了參數)for idols -l $i|grep '^d' # 尋找并顯示給出的目錄中以d開頭的字符串,即目錄文件done fi

關于$#的有關內容

$# 表示命令行上參數的個數,但不包括shell腳本名本身
詳情請參考:shell預先定義的特殊變量


實測

當給出參數 / 時

當給出參數 home 時

當給出參數 . 時(. 即為當前目錄)

當不給出參數時


本程序的作用

我們會發現不給參數時執行結果與給出參數 . 時執行結果一致,也就是說本程序的作用是:

沒有給出參數時,尋找并顯示當前目錄中以d開頭的字符串,即目錄文件
給出參數時,尋找并顯示給出的目錄中以d開頭的字符串,即目錄文件


題目二

題目描述

分析程序的功能以及運行結果,在代碼后添加注釋。


代碼實現


注釋

參數小于2輸出“you forgot the enter a filename”

退出并報錯

以只讀方式打開參數1,其權限為0644,并將返回值賦值給fd1

創建一個文件在參數2,其權限為0644,并將返回值賦值給fd2

從fd1中讀取字節數為512的內容到buf緩沖區,并將返回值賦值給n

將buf中字節數為n的內容寫到fd2中,直到n不大于0

關閉fd1,fd2


關于argc、argv

argc表示參數數量,argv則是保存參數的數組,argv[0] 指向程序運行的全路徑名,argv[1]是第一個參數,argv[2]是第二個參數,以此類推……


關于read函數



關于文件描述符

很多函數都會用到這個東西,這個東西其實就跟我們的學號一樣,是為了方便引用某文件而存在的,其類型一般為int,比如一個文件叫test,碰巧還有一個文件叫test,于是我們在引用他們時如果“叫”他們的名字往往容易兩個一起“回應”你,所以我們將他們分別描述為01、02,那么在需要引用他們的時候就方便多了。


關于write函數



本程序的作用

將fd1中的內容全部復制到fd2中


題目三

題目描述

編寫一個shell腳本,檢查給定的用戶是否登陸系統。


代碼實現

read -p "請輸入用戶名:" user if who|grep -qw $user thenecho $user login elseecho $user not login fi

實測



關于grep命令

本題中用到了grep命令的參數:-q,-w

grep -w :只匹配整個單詞,而不是包含一部分單詞的字符串

(如grep -w cmy 目標文件 ,只會匹配‘cmy’,而不匹配‘cmypangle’這種包含cmy的字符串)

grep -q : Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected.
中文意思為,安靜模式,不打印任何標準輸出。如果有匹配的內容則立即返回狀態值0。

不帶-q是這樣的:


不帶-w是這樣的


關于read命令

本題中用到了read命令的參數: -p

read -p :用于給出提示符,p是prompt的縮寫,即由這個開關項給出提示信息。

例如,本題中,回車后屏幕會顯示:

請輸入用戶名:

該語句之后輸入的內容就會被保存到use變量中了


題目四

題目描述

編寫一個shell腳本,判斷文件是不是字符設備文件,如果是,將其拷貝到 /dev 目錄下。


代碼實現

if [[ -c $1 ]] thencp $1 /dev elseecho "This file is not a character device file!" fi

關于test命令

為了方便就直接用老師的PPT截圖了



至于cp命令……emm就是很常規的用法,這里就不說了~


實測


字符設備咱也不知道咋搞,就不搞復制的情況了~

總結

以上是生活随笔為你收集整理的基础的shell编程问题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。