shell腳本試題
㈠ shell腳本問題
正確答案,這個是清睿的面試題:
awk '$4>"[13/Apr/2017:15:00:00"&&$4<"[13/Apr/2017:17:00:00"' access.log|awk '{print $1}'|sort|uniq -c|sort -n -k 1 -r|head -n 5
㈡ 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 匹配出行 在列印出這些行的第一段內容 )
㈢ linux試題求大神幫解一下趕時間謝謝了
1. 用grep命令顯示在文件a中所有包含每個字元串至少有5個連續小寫字元的字元串的行。
cat a | grep -E "[a-z]{5,}"
2. $ find / -name "test.c" -type f -mtime +3 -user greek -exec rm {} \;的含義。
找出並且刪除根目錄及其子目錄下 所有文件名為test.c的普通的文本文件 ,且該文件的最後修改時間以當前時間為參照大於3天時間
3. 在一個程序崩潰時,它一般會在指定目錄下生成一個core文件。如果沒生成core文件,可能是什麼原因?怎麼解決?
答:用「ulimit -c」命令查看當前系統設置的core文件的大小門限值
一般情況是core文件的大小超過了這個值
執行 「ulimit -c unlimited」命令後,操作系統不在限制core文件大小,或者把unlimited 替換成一個適當的值。
4. 執行命令 ls –l 時,某行顯示如下:
-rw-r--r-- 1 chris chris 207 jul 20 11:58 mydata
(1)用戶chris對該文件具有什麼許可權?
答:chris對mydata文件具有讀寫的許可權
(2)如何使任何用戶都可以讀寫執行該文件?
答:chmod 777 mydata
5. 大學校門處要求來客登記,只有一張登記表,登記表同時只能由一個人使用,用P、V原語描述一個校外人員進入大學的過程。
三、程序填空題(每小題10分,共20分)1.閱讀下面程序,請將其補充完整。
#define SHMDATASIZE 1000 //共享內存大小,以位元組為單位
void server(void)
{
union semun sunion;
int semid, shmid;
void *shmdata;
char *buffer;
semid=semget(_________________);//創建兩個信號量
sunion.val=1;
semctl(____________________);//設置信號量編號為0的值
sunion.val=0;semctl(____________________);//設置信號量編號為1的值
shmid=shmget(____________________);
shmdata=shmat(___________________);
*(int *)shmdata=semid;
buffer=shmdata+sizeof(int);
printf("Server is running with SHM id ** %d**\n", shmid);}
2.閱讀下面程序,請將其補充完整。
#define BUFFERSIZE 1024
void locksem(int semid, int semnum)
{
struct sembuf sb;
sb.sem_num=semnum;
sb.sem_op=________;//P操作
sb.sem_flg=SEM_UNDO;
semop(_______________________);
}
void unlocksem(int semid, int semnum)
{
struct sembuf sb;
sb.sem_num=semnum;
sb.sem_op=________;//V操作
sb.sem_flg=SEM_UNDO;
semop(______________________);
}
void clientwrite(int semid, char *buffer){
locksem(semid, 0);
printf("Enter Message: ");
fgets(_______________);//從鍵盤輸入一個字元串
unlocksem(semid, 1);
}
四、閱讀程序題(共3小題,每小題10分,共30分)
1. 運行下面程序,最多運行多少個進程?畫出進程家族樹。
#include "stdio.h"
#include "sys/types.h"
#include "unistd.h"
int main()
{
pid_t pid1;
pid_t pid2;
pid1 = fork();
pid2 = fork();
}
答最多有4個進程
首先第一次調用fork 主進程會產生一個pid1的子進程
然後pid1和主進程會分別調用一次pid2 = fork(); 分別再產生一個子進程因此一共最多4個進程
2. 下面給出了一個SHELL程序,試對其行後有#(n)形式的語句進行解釋,並說明程序完成的功能。
#!/bin/bash #(1)定義該shell腳本由哪中類型的shell解釋器解析
dir=$1 #(2)將shell程序的第一個命令行參數付給變數dir
if [ -d $dir ] #(3)判斷dir的值是否是一個目錄
then cd $dir #(4)如果dir是目錄則進入該目錄
for file in *
do
if [-f $file ] #(5)判斷file是否為一個文件
then
cat $file #(6)打開文件,將文件內容輸出到標准輸出流中
echo 「end of file $file」
fi
done
else
echo 「bad directory name $dir」
fi
3. 閱讀Makefile文件,回答以下問題:
(1) 此Makefile文件的主要功能是什麼?
編譯f1.c f2.c f3.c三個文件,最終生成動態鏈接庫libmys.so
(2) 此Makefile文件包含多少個規則?它們分別是什麼?
包含4個規則
第一個 「TGT = $(patsubst %.c, %.o, $(SRC))」
將$(SRC)目錄下的所有以.c為後綴的文件替換成.o結尾,且存入TGT變數中
第二個 「%.o : %.c
cc -c $<」
用cc命令依次將三個源文件編譯成目標文件
第三個
libmys.so : $(TGT)
cc -shared -o $@ $(TGT)
用上一步生成的3個中間文件生成動態鏈接庫libmys.so
第四個
clean:
rm -f $(TGT)
執行 make clean 後 會刪除所有的中間文件即.o文件
(3) 使用此Makefile文件可以生成目標文件f2.o嗎?為什麼?
答:可以,因為該makefile的邏輯是先生成所有的.o文件,然後再生成動態鏈接庫。
all : libmys.so
SRC = f1.c f2.c f3.c
TGT = $(patsubst %.c, %.o, $(SRC))
%.o : %.c
cc -c $<
libmys.so : $(TGT)
cc -shared -o $@ $(TGT)
clean:
rm -f $(TGT)
編程題沒做,樓主一、見諒,有時間做了補充下答案
㈣ 分享70個經典的 Shell 腳本面試題與答案
1) 如何向腳本傳遞參數 ?
./script argument
2) 如何在腳本中使用參數 ?
第一個參數 : $1 ,第二個參數 : $2
cp $1 $2
3) 如何計算傳遞進來的參數 ?
$#
4) 如何在腳本中獲取腳本名稱 ?
$0
5) 如何檢查之前的命令是否運行成功 ?
$?
6) 如何獲取文件的最後一行 ?
tail-1
7) 如何獲取文件的第一行 ?
head-1
8) 如何獲取一個文件每一行的第三個元素 ?
awk'{print $3}'
9) 假如文件中每行第一個元素是 FIND,如何獲取第二個元素
awk'{ if ($1 == "FIND") print $2}'
10) 如何調試 bash 腳本
將 -xv 參數加到 #!/bin/bash 後
例子:
#!/bin/bash –xv
11) 舉例如何寫一個函數 ?
12) 如何向連接兩個字元串 ?
輸出
HelloWorld
13) 如何進行兩個整數相加 ?
14) 如何檢查文件系統中是否存在某個文件 ?
15) 寫出 shell 腳本中所有循環語法 ?
for 循環 :
while 循環 :
until 循環 :
16) 每個腳本開始的 #!/bin/sh 或 #!/bin/bash 表示什麼意思 ?
這一行說明要使用的 shell 。 #!/bin/bash 表示腳本使用 /bin/bash 。對於 python 腳本,就是 #!/usr/bin/python 。
17) 如何獲取文本文件的第 10 行 ?
head -10 file|tail -1
18) bash 腳本文件的第一個符號是什麼
#
19) 命令: [ -z "" ] && echo 0 || echo 1 的輸出是什麼
0
20) 命令 「export」 有什麼用 ?
使變數在子 shell 中可用。
21) 如何在後台運行腳本 ?
nohup command&
大部分時間我們可能是遠程使用Linux,我碰到過由於網路斷線使得在後台運行的 command & 沒了...
22) "chmod 500 script" 做什麼 ?
使腳本所有者擁有可執行許可權。
23) ">" 做什麼 ?
重定向輸出流到文件或另一個流。
24) & 和 && 有什麼區別
25) 什麼時候要在 [ condition ] 之前使用 「if」 ?
當條件滿足時需要運行多條命令的時候。
26) 命令: name=John && echo "My name is $name" 的輸出是什麼
My name is John
27) bash shell 腳本中哪個符號用於注釋 ?
#
28) 命令: echo ${new:-variable} 的輸出是什麼
variable
29) ' 和 " 引號有什麼區別 ?
30) 如何在腳本文件中重定向標准輸出和標准錯誤流到 log.txt 文件 ?
在腳本文件中添加 "exec >log.txt 2>&1" 命令。
31) 如何只用 echo 命令獲取字元串變數的一部分 ?
例子:
32) 如果給定字元串 variable="User:123:321:/home/dir" ,如何只用 echo 命令獲取 home_dir ?
echo ${variable#*:*:*:}
或
echo ${variable##*:}
33) 如何從上面的字元串中獲取 「User」 ?
echo ${variable%:*:*:*}
或
echo ${variable%%:*}
34) 如何使用 awk 列出 UID 小於 100 的用戶 ?
awk -F: '$3<100' /etc/passwd
35) 寫程序為用戶計算主組數目並顯示次數和組名
36) 如何在 bash shell 中更改標準的域分隔符為 ":" ?
IFS=":"
37) 如何獲取變數長度 ?
${#variable}
38) 如何列印變數的最後 5 個字元 ?
echo ${variable: -5}
39) ${variable:-10} 和 ${variable: -10} 有什麼區別?
40) 如何只用 echo 命令替換字元串的一部分 ?
echo ${variable//pattern/replacement}
41) 哪個命令將命令替換為大寫 ?
tr '[:lower:]' '[:upper:]'
42) 如何計算本地用戶數目 ?
wc -l /etc/passwd|cut -d" " -f1 或者 cat /etc/passwd|wc -l
43) 不用 wc 命令如何計算字元串中的單詞數目 ?
44) "export $variable" 或 "export variable" 哪個正確 ?
export variable
45) 如何列出第二個字母是 a 或 b 的文件 ?
ls -d ?[ab]*
46) 如何將整數 a 加到 b 並賦值給 c ?
47) 如何去除字元串中的所有空格 ?
echo $string|tr -d " "
48) 重寫這個命令,將輸出變數轉換為復數: item="car"; echo "I like $item" ?
item="car"; echo "I like ${item}s"
49) 寫出輸出數字 0 到 100 中 3 的倍數(0 3 6 9 …)的命令 ?
for i in {0..100..3}; do echo $i; done
或
for (( i=0; i<=100; i=i+3 )); do echo "Welcome $i times"; done
50) 如何列印傳遞給腳本的所有參數 ?
echo $*
或
echo $@
51) [ $a == $b ] 和 [ $a -eq $b ] 有什麼區別
52) = 和 == 有什麼區別
53) 寫出測試 $a 是否大於 12 的命令 ?
[ $a -gt 12 ]
54) 寫出測試 $b 是否小於等於 12 的命令 ?
[ $b -le 12 ]
55) 如何檢查字元串是否以字母 "abc" 開頭 ?
[[ $string == abc* ]]
56) [[ $string == abc* ]] 和 [[ $string == "abc*" ]] 有什麼區別
57) 如何列出以 ab 或 xy 開頭的用戶名 ?
egrep "^ab|^xy" /etc/passwd|cut -d: -f1
58) bash 中 $! 表示什麼意思 ?
後台最近執行命令的 PID.
59) $? 表示什麼意思 ?
前台最近命令的結束狀態。
60) 如何輸出當前 shell 的 PID ?
echo $$
61) 如何獲取傳遞給腳本的參數數目 ?
echo $#
62) $* 和 $@ 有什麼區別
63) 如何在 bash 中定義數組 ?
array=("Hi" "my" "name" "is")
64) 如何列印數組的第一個元素 ?
echo ${array[0]}
65) 如何列印數組的所有元素 ?
echo ${array[@]}
66) 如何輸出所有數組索引 ?
echo ${!array[@]}
67) 如何移除數組中索引為 2 的元素 ?
unset array[2]
68) 如何在數組中添加 id 為 333 的元素 ?
array[333]="New_element"
69) shell 腳本如何獲取輸入的值 ?
a) 通過參數
./script param1 param2
b) 通過 read 命令
read -p "Destination backup Server : " desthost
70) 在腳本中如何使用 "expect" ?
㈤ shell腳本編程
系統管理員用的
1 省心省力
你要創建幾十個用戶,給他們家目錄,創建samba密碼,你一個個創建會搞死人的,寫個腳本,執行一遍就完了
2 自動工作
自動在晚上3點備份資料庫,你不可能晚上爬起來開電腦連接到公司伺服器上去操作吧,這個寫個腳本加到cronjob 完事
3 文本分析
給你一個很大的文本,分析裡面的郵件地址出現了多少次,你不可能一個個數吧,數一年都數不完,寫個腳本幾分鍾就統計出來了,awk只需要一行,這也是騰訊的一個面試題
做linux sa不會這個是不現實的,不僅會,而且要精通,但是你只會這個 shell也不行,因為搞linux的還要求會其他的東西
㈥ 編寫兩個shell 腳本s1,s2,其中s1能夠啟動3個進程,進程名稱分別為a,b,c,每個進程的代碼如下:
1) cat d1 d2 >d3 # 前提是文本文件,還可以使用join
2)
s1.sh
#!/bin/bash
/path/a &
/path/b &
/path/c &
s2.sh
#!/bin/bash
kill -9 $(pgrep a) #或者kill -9 $(ps aux | grep -w a | grep -v grep | awk '{print $2}')
kill -9 $(pgrep b) #同上
kill -9 $(pgrep c) #同上
㈦ linux(shell)腳本編程題目求教,謝謝(200分,滿意繼續追加分)
先佔下樓層,空了慢慢給你做!
先做第一題1月12日:
#!/bin/bash
echo this "date" :`date`;
echo this "cal" :`cal`;
echo this "pwd" :`pwd`;
echo this "ls" : `ls`.
第二題1月12日:
這個沒法寫了撒 太籠統;建議翻翻書。
我列個環境變數的例子吧:
#!/bin/bash
echo "第二題":
TEST_DIR=/root
export $TEST_DIR;
echo "環境變數TEST_DIR是/root".
第三題1月12日:
#!/bin/bash
echo "第三題for":
echo "3.1 for"
x=0
for ((i=1 ; i<101 ;i++));
do
x=$(($x+$i))
done
echo $x
echo "---------------------------------"
echo "第三題while":
echo "3.2 while"
x=0
i=1
while [ $i -lt 101 ]
do
i=$(($i+1))
x=$(($x+$i))
done
echo $x
第三題第二個
#!/bin/bash
echo "3.2"
function fib {
if [ $1 -lt 2 ]; then
echo -n $1
else
local n_2=$(($1 - 2))
local n_1=$(($1 - 1))
local f_n_2=$(fib $n_2)
local f_n_1=$(fib $n_1)
local f_n=$((f_n_2 + f_n_1))
echo -n $f_n
fi
}
n=10
for ((i = 0; i < $n; i++))
do
printf "fib(%2d) = %d\n" $i $(fib $i)
done
㈧ shell腳本
Shell腳本基本知識
概述:shell其實是內核與用戶之間的一個介面,
shell腳本
如果有一系列經常使用的linux命令,你可以把它們存儲在一個文件腫。shenll可以讀取這個文件,並執行其中的命令。這樣的文件成為腳本文件。
執行shell腳本
要創建一個shell腳本,你要使用任何編輯器比如vi在文本文件中編寫他。
為了使用bashshell賴執行腳本magic,其命令是:bashmagic或者./magic
echo命令:
echo「!」
屏幕上就會回顯「!」
#符號
用於在shell腳本腫可以包含註解入口
echo「hello」
#thisisacommentline.thiswouldnotproceanyoutput!
echo「world!」
第二行是一個註解的例子。它將被shell忽略,而且不產生任何消息
變數:
可以在任何時間通過簡單的賦值來創建。
語法:
<variablename>-<value>
Linux中的所有變數都被當作字元串
引用變數:
$符號用於引用一個變數的內容
variable1=${variable2}
讀入值給變數
在執行shell腳本時,shell還允許用戶直接從鍵盤讀入一個值給變數,還可以使用read命令來作。
$readfname
本地和全局shell變數
局部變數
當引用shell時,只有創建它的shell能夠知道變數的存在
全局變數
稱為子shell
shell中創建的變數局部於創建它的shell,除非使用export命令特別指出是全局的。
環境變數:
通過改變這些變數的值,用戶能夠定製此環境
一些環境變數的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME變數
Linux系統中的每個用戶都有一個相關的稱作HOME的目錄
當一個用戶登錄後,進入相應的HOME的目錄
$echo$HOME
PATH變數
包含一列用冒號定界的目錄的路徑名字,便於可執行程序的搜索。
PS1變數
PS1(PromptString1)變數包含了shell提示符,$符號
$PS1=「HELLO>」
HELLO>
PS2變數
是為第二個提示符設置值的環境變數
LOGNAME變數
包含用戶的注冊名字
$echo「${LOGNAME}」
SHLVL變數
該變數包含當前工作的shelllevel
SHELL變數
環境變數存儲了用戶預設的shell
env命令
可用來查看所有的已移出的環境變數表和它們各自的值!
命令替換
在單個命令行中使用多個命令的另外一種方法(非Pipes)是通過命令替換
echo「thedatais`date`」
expr命令
用於求之算術表達式。該命令的輸出被送到標准輸出
$expr4+5
將在屏幕上顯示9
算術展開:
你可以在$((…))中括一個表達式,用下面的命令來計算它的值;
$((expression))
example1
編寫一個shell腳本用於計算呼叫中心未應答的詢問的數量。該腳本應該接受一天那所報告的詢問的總數和應答的詢問的數量,以便計算未應答的詢問的數量。
所有未應答的詢問總數=所有詢問的總數-應答的詢問的數量
<!--[if!supportLists]-->※<!--[endif]-->※※※※※※※※※※※※※※※※※※※※※※※
條件執行
test和[]
求值表達式,並返回true(0)或false()
數值測試:
-eq等於則為真
-ne不等於則為真
-gt大於則為真
-ge大於等於則為真
-lt小於則為真
-le小於等於則為真
if構造
Linuxshell提供了循環和判定的構造,可以在shell腳本中使用
算術測試
結合if構造,它可以用於測試變數的數字值
串測試
test命令也可以用於字元串
=等於則為真
!=不相等則為真
-z字元串長度為零則為真
-n字元串長度不為零則為真
文件測試
test命令也可以用於檢查文件的狀態
-e文件存在則為真
-r文件存在並且可讀則為真
-w文件存在並且可寫則為真
-x文件存在並且可執行則為真
-s文件存在並且至少有一個字元則為真
-d文件存在並且為目錄則為真
-f文件存在並且為普通文件則為真
-c文件存在並且為字元型文件則為真
-b文件存在並且為塊特殊文件則為真
-a並且-o或者!非
exit命令
用於終止shell腳本的執行並返回到$提示符下
case。。。esac
shell腳本中使用的這個構造依據變數的值而執行一組特定指令
當變數的值和其中的一個值匹配的時候,就執行寫在該值下的一組命令。
example3
迭代
while構造
while<條件>
do
<命令(s)>
done
只有條件為真的時候,才能執行do與done之間的命令
until構造
until循環構造的求值模式於while循環相反
until循環將繼續執行直到求值的條件為真的時候
for構造
forvariable_namein<list_of_values>
do
…
done
for循環取一列值作為輸入並對循環中每個值執行循環
break和contineu命令
同其他語言中的用法
example4
控制進程的執行
請求後台處理
用於請求後台進程的符號是(&)
$wctempfile&
[1]2082
$vinewfile
檢查後台進程
ps(進程狀態)命令為每個當前的活動的每個進程產生一行入口。
終止後台進程
可用kill,如下所示
kill278
查看完成一個命令所花的時間
你可以使用time命令來查看一個命令從開始到結束所花的時間
timefine/etc–name「passwd」2>/dev/null/dev/null表明忽略錯誤信息。
管道的介紹
垂直條(|)是管道字元
它只是shell:「|」前面命令的輸出作為「|」之後命令的輸入發送
ls–l|more
用管道組合命令,功能強大
㈨ 分享70個經典的 Shell 腳本面試題與答案
我們為你的面試准備選擇了 70 個你可能遇到的 shell 腳本面試問題及解答。了解腳本或至少知道基礎知識對系統管理員來說至關重要,它也有助於你在工作環境中自動完成很多任務。在過去的幾年裡,我們注意到所有的 linux 工作職位都要求腳本技能。
1) 如何向腳本傳遞參數 ?
./script argument
例子: 顯示文件名稱腳本
(LCTT 譯註:謝謝某匿名訪客的提醒,原題有誤,修改之。)
2) 如何在腳本中使用參數 ?
第一個參數 : 2
例子 : 腳本會復制文件(arg1) 到目標地址(arg2)
3) 如何計算傳遞進來的參數 ?
4) 如何在腳本中獲取腳本名稱 ?
5) 如何檢查之前的命令是否運行成功 ?
6) 如何獲取文件的最後一行 ?
7) 如何獲取文件的第一行 ?
8) 如何獲取一個文件每一行的第三個元素 ?
9) 假如文件中每行第一個元素是 FIND,如何獲取第二個元素
10) 如何調試 bash 腳本
將 -xv 參數加到 #!/bin/bash 後
例子:
11) 舉例如何寫一個函數 ?
12) 如何向連接兩個字元串 ?
輸出
HelloWorld
13) 如何進行兩個整數相加 ?
輸出
3
據 @kashu 的意見,本題的更佳回答為:
兩個整數相加,還有若干種方法實現:
14) 如何檢查文件系統中是否存在某個文件 ?
15) 寫出 shell 腳本中所有循環語法 ?
for 循環 :
while 循環 :
until 循環 :
16) 每個腳本開始的 #!/bin/sh 或 #!/bin/bash 表示什麼意思 ?
這一行說明要使用的 shell。#!/bin/bash 表示腳本使用 /bin/bash。對於 python 腳本,就是
17) 如何獲取文本文件的第 10 行 ?
18) bash 腳本文件的第一個符號是什麼
19) 命令:[ -z "" ] && echo 0 || echo 1 的輸出是什麼
20) 命令 「export」 有什麼用 ?
21) 如何在後台運行腳本 ?
在腳本後面添加 「&」。
據 @kashu 的意見,更好的答案是:
大部分時間我們可能是遠程使用Linux,我碰到過由於網路斷線使得在後台運行的command &沒了...
22) "chmod 500 script" 做什麼 ?
使腳本所有者擁有可執行許可權。
23) ">" 做什麼 ?
重定向輸出流到文件或另一個流。
24) & 和 && 有什麼區別
25) 什麼時候要在 [ condition ] 之前使用 「if」 ?
當條件滿足時需要運行多條命令的時候。
26) 命令: name=John && echo 'My name is $name' 的輸出是什麼
variable
27) bash shell 腳本中哪個符號用於注釋 ?
28) 命令: echo ${new:-variable} 的輸出是什麼
variable
29) ' 和 " 引號有什麼區別 ?
30) 如何在腳本文件中重定向標准輸出和標准錯誤流到 log.txt 文件 ?
在腳本文件中添加 "exec >log.txt 2>&1" 命令。
31) 如何只用 echo 命令獲取字元串變數的一部分 ?
例子:
32) 如果給定字元串 variable="User:123:321:/home/dir",如何只用 echo 命令獲取 home_dir ?
或
33) 如何從上面的字元串中獲取 「User」 ?
或
34) 如何使用 awk 列出 UID 小於 100 的用戶 ?
35) 寫程序為用戶計算主組數目並顯示次數和組名
36) 如何在 bash shell 中更改標準的域分隔符為 ":" ?
37) 如何獲取變數長度 ?
38) 如何列印變數的最後 5 個字元 ?
39) {variable: -10} 有什麼區別?
40) 如何只用 echo 命令替換字元串的一部分 ?
41) 哪個命令將命令替換為大寫 ?
42) 如何計算本地用戶數目 ?
43) 不用 wc 命令如何計算字元串中的單詞數目 ?
44) "export $variable" 或 "export variable" 哪個正確 ?
45) 如何列出第二個字母是 a 或 b 的文件 ?
46) 如何將整數 a 加到 b 並賦值給 c ?
或
或
47) 如何去除字元串中的所有空格 ?
48) 重寫這個命令,將輸出變數轉換為復數: item="car"; echo "I like $item" ?
49) 寫出輸出數字 0 到 100 中 3 的倍數(0 3 6 9 …)的命令 ?
或
50) 如何列印傳遞給腳本的所有參數 ?
或
51) [ b ] 和 [ b ] 有什麼區別
52) = 和 == 有什麼區別
53) 寫出測試 $a 是否大於 12 的命令 ?
[ $a -gt 12 ]
54) 寫出測試 $b 是否小於等於 12 的命令 ?
[ $b -le 12 ]
55) 如何檢查字元串是否以字母 "abc" 開頭 ?
[[ $string == abc* ]]
56) [[ string == "abc " ]] 有什麼區別*
57) 如何列出以 ab 或 xy 開頭的用戶名 ?
egrep " ab| xy" /etc/passwd|cut -d: -f1
58) bash 中 $! 表示什麼意思 ?
後台最近執行命令的 PID.
59) $? 表示什麼意思 ?
前台最近命令的結束狀態。
60) 如何輸出當前 shell 的 PID ?
echo $$
61) 如何獲取傳遞給腳本的參數數目 ?
echo $#
(LCTT 譯註:和第3題重復了。)
62) @ 有什麼區別
63) 如何在 bash 中定義數組 ?
64) 如何列印數組的第一個元素 ?
65) 如何列印數組的所有元素 ?
66) 如何輸出所有數組索引 ?
67) 如何移除數組中索引為 2 的元素 ?
68) 如何在數組中添加 id 為 333 的元素 ?
69) shell 腳本如何獲取輸入的值 ?
a) 通過參數
b) 通過 read 命令
70) 在腳本中如何使用 "expect" ?
㈩ 在虛擬機下 編寫三個shell腳本
1
#!/bin/bash
[$#-ne1]&&echo"usage:$0filename"&&exit-1
read-p"entercount:"count
i=1
while[$i-le$count]
do
date=`date-d"$idays"+"%Y%m%d"`
>$1_${date}
i=$(($i+1))
done
2
#!/bin/bash
if[$#-ne1];then
echo"usage:$0file1"
exit-1
fi
if[-e$1];then
now=`date+"%Y%m%d%H%M%S"`
mv$1$1_${now}
fi
awk-F':''{print$1}'/etc/passwd|grept>$1
3. 確保user.txt和pass.txt格式正確嗎?
user.txt :
user:passwd:UID:GID::/home/user:/bin/bash
pass.txt:
user:newpasswd
#!/bin/bash
if[$#-ne2];then
echo"usage:$0user_filepasswd_file"
exit-1
fi
read-p"inputaction[add/del]:"act
case$actin
"add")
newusers$1
cat$2|chpasswd
;;
"del")
forusrin`awk-F':''{print$1}'$1`
do
userdel$usr
done
;;
*)echo"ERRORFLAG";;
esac