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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bash Shell学习笔记三

發(fā)布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bash Shell学习笔记三 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.eval的含義

eval實際上是對后面的算式或者表達(dá)式執(zhí)行兩次解釋。

?

例如

a=sc

bsc=feiye

echo $a

eval echo "$"b$a

?

最后一句實際上是執(zhí)行了2次。

?

第一次是得到 echo $bsc,再執(zhí)行一次就得到了feiye


2.怎樣把命令輸出賦值給變量

1.將$()將命令括起來。

a=$(whoami)

echo $a

2.將``將命令括起來。[注意:`是~號對應(yīng)的鍵]

a=`whoami`

echo $a

3.怎樣得到文件中的某行

1.如何是第一行或者最后一行,可以用 head -n 1或者tail -n 1得到

?

2.如果是想要得到文件中的某個滿足條件的行,可以用while read line結(jié)構(gòu)的程序。

file=/home/test/input.dat

cat $file | while read line

do

?? if [ echo $line|grep test -q ]

?? do

?????? echo "get it"

??? fi

done

4.怎樣讀取文件中的字符值并賦值給變量

1.用while read line讀取文件中的每行,用 函數(shù)讀取變量

line=“test string”

readstr()

{

read var1 var2

echo $var1

echo $var2

}

echo $line|readstr

?

2.用awk實現(xiàn)

line=test string

var1=`echo $line|awk '{print $1}'`

var2=`echo $line|awk '{print $2}'`


5.如何去掉回車與換行

使用 tr -d '/n/r'

6.shell中如何判斷字符串匹配

1.利用grep

如:

echo $str1|grep "*g09?" -q

echo $?

判斷str1字符中是否匹配后面的模式,如果匹配則$?的值為0,否則為非0

?

2.利用 =~

如:

if [[ " sc test cs" =~ " test " ]]

then

echo "true"

else

echo "false"

fi

?

7.shell中如何判斷數(shù)字相等

1.用(( ))將需要比較的數(shù)字括起來。

(($num1 == $num2)) (($num1 != $num2)) (($num1 >= $num2))

(($num1 <= $num2)) (($num1 > $num2)) (($num1 < $num2))

?

2.用比較符號 -eq -gt -ge -lt -le -ne來比較

[ $num1 -eq $num2 ] (=) [ $num1 -gt $num2 ] (>) [$num1 -ge $num2 ](>=)

[ $num1 -lt $num2 ] (<) [ $num1 -le $num2 ] (<=) [ $num1 -ne $num2 ] (!=)


8.如何在shell函數(shù)中返回值以及如何取shell函數(shù)的返回值

在函數(shù)中返回值的方法有多種。

?

1.利用全局變量,在子函數(shù)中改變?nèi)肿兞?結(jié)果將會保存到函數(shù)結(jié)束。

?

2.在函數(shù)中通過result語句來返回值,但是只能返回一個0-127范圍的數(shù)值,用 &? 來獲取函數(shù)執(zhí)行后的結(jié)果。

?

3.通過echo 方法

?

通過 &?來取得一個函數(shù)的返回值,如果函數(shù)中沒有返回值,則該值為函數(shù)中最后一個命令的執(zhí)行結(jié)果。

?

shell命令的執(zhí)行結(jié)果,值為0表示為真,值非0表示為假。


9.如何將子shell的變量傳遞給父shell,或者將父shell變量傳遞到子shell

父shell變量傳遞到子shell只需要用export 就可以了,子shell對變量的改變將不會影響父shell。

?

子shell變量傳遞到父shell,還沒有找到完美的,我知道暫時只能通過臨時文件來傳遞。

?

?

10.文件或目錄的s權(quán)限與t權(quán)限

一般文件只有3中權(quán)限 w,r,x,分別表示可寫,可讀,可執(zhí)行.

某些特殊文件還有s權(quán)限或者t權(quán)限。

例如

ll /usr/bin/passwd

-rwsr-xr-x 1 root shadow 79336 2007-05-04 19:28 /usr/bin/passwd

ll /
drwxrwxrwt? 34 root root 2488 2010-01-30 21:20 tmp

我們看到passwd的User位置有個s權(quán)限,它表示運行它的用戶將會以該文件的屬主身份來執(zhí)行。

所以普通用戶可以運行passwd來修改自己的命令(雖然/etc/passwd是root用戶的)

同樣的在Group位置也可以設(shè)置s權(quán)限,它同suid類似,運行它的用戶將會以該文件的組身份來執(zhí)行。

t權(quán)限只對目錄有效果,它的作用就是所有用戶都可以自由建立文件和文件夾,但是只能刪除自己建立的文件或者文件夾,

這對于/tmp的意義是非常重要的。

?

對文件加suid(4)權(quán)限 chmod 4755 file

對文件加sgid(2)權(quán)限 chmod 2755 file

對文件加t權(quán)限(1)權(quán)限 chmod 1777 file

對目錄加suid,sgid,t權(quán)限 chmod 7777 directory

?

需要注意的是

1.suid,guid只能對應(yīng)于二進制文件,對shell無效

2.guid和uid,除了上面所說的作用外,guid還一般用來使某個目錄內(nèi)創(chuàng)建的文件都具有某個組權(quán)限。

3.s權(quán)限的前提是x權(quán)限,如果文件沒有x權(quán)限而被賦予s權(quán)限,將會顯示大寫的S.

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Bash Shell学习笔记三的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。