經典shell面試題

2022-07-05 19:54:14 字數 4091 閱讀 7401

./script argument

例子: 顯示檔名稱指令碼

./show.sh file1.txt

cat show.sh

#!/bin/bash

cat $1

第乙個引數 : $1,第二個引數 : $2

例子 : 指令碼會複製檔案(arg1) 到目標位址(arg2)

./copy.sh file1.txt /tmp/

cat copy.sh

#!/bin/bash

cp $1 $2

$#

$0

$?

tail -1

head -1

awk 『『

awk 『『

將 -xv 引數加到 #!/bin/bash 後

例子:#!/bin/bash –xv

function example

v1="hello"

v2="world"

v3=$v1+$v2

echo $v3

輸出 hello+world

v1=1

v2=2

v3=$v1+$v2

echo $v3

輸出 3

if [ -f /var/log/messages ]

then

echo "file exists"

fi

for 迴圈 :

for i in $( ls ); do

echo item: $i

done

while 迴圈 :

#!/bin/bash

counter=0

while [ $counter -lt 10 ]; do

echo the counter is $counter

let counter=counter+1

done

until 迴圈 :

#!/bin/bash

counter=20

until [ $counter -lt 10 ]; do

echo counter $counter

let counter-=1

done

這一行說明要使用的 shell。#!/bin/bash 表示指令碼使用 /bin/bash。對於 python 指令碼,就是 #!/usr/bin/python。(lctt譯註:這一行稱之為釋伴行

。)

head -10 file|tail -1

#

0

使變數在子 shell 中可用。

在指令碼後面新增 「&」。

使指令碼所有者擁有可執行許可權。

重定向輸出流到檔案或另乙個流。

& – 希望指令碼在後台執行的時候使用它

&& – 當前乙個指令碼成功完成才執行後面的命令/指令碼的時候使用它

當條件滿足時需要執行多條命令的時候。

my name is $name

#

variable

『 – 當我們不希望把變數轉換為值的時候使用它。

」 – 會計算所有變數的值並用值代替。

在指令碼檔案中新增 「exec >log.txt 2>&1″ 命令。

echo $

x - 起始位置

y - 長度

例子: variable="my name is petras, and i am developer."

echo $ # 會顯示 petras

echo $

或 echo $

echo $

或 echo $

awk -f: 『$3<100『 /etc/passwd

cat /etc/passwd|cut -d: -f4|sort|uniq -c|while read c g

do |xargs -n 2

done

ifs=":"

$

echo $

$ – 如果之前沒有給 variable 賦值則輸出 10

$ – 輸出 variable 的最後 10 個字元

echo $

tr 『[:lower:]『 『[:upper:]『

wc -l /etc/passwd|cut -d」 」 -f1 或者 cat /etc/passwd|wc -l

set $

echo $#

export variable

ls -d ?[ab]*

c=$((a+b))

或 c=`expr $a + $b`

或 c=`echo "$a+$b"|bc`

echo $string|tr -d " "

item="car"; echo "i like $s"

for i in ; do echo $i; done

或 for (( i=0; i<=100; i=i+3 )); do echo "welcome $i times"; done

echo $*

或 echo $@

[ $a == $b ] – 用於字串比較

[ $a -eq $b ] – 用於數字比較

= – 用於為變數複製

== – 用於字串比較

[ $a -gt 12 ]

[ $b -le 12 ]

[[ $string == abc* ]]

[[ $string == abc* ]] – 檢查字串是否以字母 abc 開頭

[[ $string == "abc" ]] – 檢查字串是否完全等於 abc

egrep "^ab|^xy" /etc/passwd|cut -d: -f1

後台最近執行命令的 pid.

前台最近命令的結束狀態。

echo $$

echo $#

$* – 以乙個字串形式輸出所有傳遞到指令碼的引數

$@ – 以 $ifs 為分隔符列出所有傳遞到指令碼中的引數

array=("hi" "my" "name" "is")

echo $

echo $

echo $

unset array[2]

array[333]="new_element"

a) 通過引數

./script param1 param2

b) 通過 read 命令

read -p "destination backup server : " desthost

/usr/bin/expect << eod

spawn rsync -ar $ $:$

expect "*?assword:*"

send "$/r"

expect eof

eod

經典shell面試題整理

問題 下面是乙個 etc passwd檔案的部分內容。題目要求取出shell並統計次數,shell是指後面的 bin bash,sbin nologin等,如下面 bin bash出現12次,sbin nologin出現3次。plain view plain copy hyn x 525 500 h...

經典shell面試題整理

一 取出 etc passwd檔案中shell出現的次數 問題 下面是乙個 etc passwd檔案的部分內容。題目要求取出shell並統計次數,shell是指後面的 bin bash,sbin nologin等,如下面 bin bash出現12次,sbin nologin出現3次。hyn x 52...

經典面試題

1.以下三條輸出語句分別輸出什麼?char str1 abc char str2 abc const char str3 abc const char str4 abc const char str5 abc const char str6 abc cout boolalpha str1 str2 ...